zoukankan      html  css  js  c++  java
  • Objective-C语言的一些基础特性

         OC与C++、Java等面向对象语言有很多的类似之处,不过在很多方面也是有所差别的。若是用过某一种面向对象语言,那么就很容易理解OC语言所用的范式和模板了。但是在语法使用上,也许会显得陌生。因为OC语言使用了“Messaging Structure(消息结构)”而非“Function Calling(函数调用)”。消息与函数调用的基本格式如下(以Student类为例):

                   //Messaging(OC)

                  Student *stu=[Student new];

                  [stu setName:name1 and setAge:age1];

                  //Function calling(C++)

                  Student *stu= new Student;

                  stu->set(name1,age1);

         关键区别在于:使用消息结构的语言,其运行时所执行的代码由运行环境来决定;而使用函数调用的语言,则由编译器决定。如果范例代码中调用的函数是多态的,那么在运行时就要按照“virtual table(虚方法表)”来查出到底应该执行哪个函数实现。而采用消息结构的语言,不论是否是多态,总是在运行时才会查找索要执行的方法。实际上,编译器甚至不关心接受消息的对象是何种类型。接收消息的对象问题也要在运行时处理,其过程叫做“dynamic binding(动态绑定)”。

         OC语言的重要工作都由“runtime component(运行期组件)”而非编译器来完成。使用oc的面向对象也行所需要的全部数据结构及函数都在运行期组件里面。举例来说,运行期组件中含有全部内存管理方法。运行期组件本质上就是一种与开发者所编代码相链接的“dynamic library(动态库)”,其代码能把开发者编写的所有程序粘合起来。这样的话,只需要更新运行期组件,即可提升应用程序性能。而那中许多工作都在编译期完成的语言,若想获得类似的性能提升,则要重新编译应用程序代码。

         OC是C的superset,所以C的所有功能在编写OC代码时依然是适用的。因此,必须同时掌握C与OC这两门语言的核心概念,方能写出高效的OC代码。其中有位重要的是要理解C的内存模型,这有助于理解OC的内存模型及其“reference counting(引用计数)”机制的工作原理。若要理解内存模型,则需要明白:OC语言中的指针是用来指示对象。

  • 相关阅读:
    Vmware 虚拟硬盘 合并多个分割文件
    一步步带你做vue后台管理框架(三)——登录功能
    一步步带你做vue后台管理框架(二)——上手使用
    webpack教程(六)——分离组件代码
    webpack教程(五)——图片的加载
    webpack教程(四)——css的加载
    input输入框自动填充黄色背景解决方案
    webpack教程(三)——热刷新
    webpack教程(二)——webpack.config.js文件
    webpack教程(一)——初体验
  • 原文地址:https://www.cnblogs.com/psp429504257/p/4536422.html
Copyright © 2011-2022 走看看