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语言中的指针是用来指示对象。

时间: 2024-10-19 08:54:13

Objective-C语言的一些基础特性的相关文章

iOS核心语言Objective C语言 —— 内存管理

本分享是面向有意向从事iOS开发的伙伴以及苹果产品的发烧友们,或者已经从事了iOS的开发者,想进一步提升者.如果您对iOS开发有极高的兴趣,可以与我一起探讨iOS开发,一起学习,共同进步.如果您是零基础,建议您先翻阅我之前分享的iOS开发分分钟搞定C语言系列,然后在开始Objective C语言的学习,如果您遇到问题也可以与我探讨,另外将无偿分享自己整理出来的大概400G iOS学习视频及学习资料,都是干货哦!可以新浪微博私信?关注极客James,期待与您的共同学习和探讨!!由于时间有限,每天在

Atitit. Object-c语言 的新的特性  attilax总结

Atitit. Object-c语言 的新的特性  attilax总结 1.1. Object-C语言由 Brad J.Cox于20世纪80年代早期设计,1 1.2. Object-C新增的数据结构:1 1.3. 类扩展1 1.4. 动态特性 Object-C中一个强大的特性就是它的动态因素.2 1.5. 多重继承的偏方  一个类可以实现若干的协议,从这个角度实现了类的多重继承.2 1.6. 实体方法   静态函数  减号“-”  加号“+” 声明2 1.7. 调用方法:Objective-C里

linux文件系统及bash基础特性

linux文件系统 一.根文件系统 linux被识别的第一个被称为根之间关联的文件系统叫做根文件系统(rootfs),其他分区要想被读到,需要挂载到根目录的某个挂载点(根的子目录)上.根文件系统至关重要,整个文件系统统一访问入口. Linux引导启动时,默认使用的文件系统是根文件系统.其中一般都包括这样一些子目录: /boot 系统引导文件存放目录 /bin 供所有用户使用的命令(不能关联到独立分支)不能关联到独立分区,os启动即会用到的程序. /sbin 管理员使用特权命令.root-only

Linux基础知识--Linux的文件系统和bash的基础特性

Linux基础知识--linux的文件系统和bash的基础特性 一.Linux文件系统: Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中 linux文件系统遵循FHS(Filesystem Hierarchy Standard,文件系统目录标准),多数Linux版本采用这种文件组织形式.FHS采用了树行组织文件. FHS定义了两层规范,第一层是,/目录下面的各个目录应该要

Objective—C语言的新魅力——Nullability、泛型集合与类型延拓

Objective-C语言的新魅力 一.引言 在Xcode7中,iOS9的SDK已经全面兼容了Objective-C的一些新特性和新功能.这些功能都只作用于编译期,对程序的运行并没有影响,因此,它可以很好的向下进行兼容,无缝的衔接低版本的iOS系统,那么这些特性有什么样的用处呢,作为开发者,我保证你一定会爱上他们,如果你可以将这些新特性都应用于你的开发,你的开发效率和代码质量,相比之前,会有一个很大的提升. 二.Nullability检测的支持 在swift语言中,通过!和?可以将对象声明成Op

从头认识java-1.1 编程语言抽象过程以及java的基础特性

这一章节我们来简单的聊聊对象抽象的过程. 1.所有语言都提供抽象机制. 例如:a=1(下面都是举例子,里面所提及的内容有可能是错误的,因为笔者没学过机器码和汇编) 在机器码当中:1000100111011000 在汇编当中:mov a,1 在C语言当中:a=1 在java当中: class Test(){ a=1; } 从上面的不同的表示里面可以发现,语言都是在不断的抽象,从最开始的0和1,一直到java的创建一个对象然后在对象里面赋值,就是一个不断抽像的过程. 同时,也是编程语言努力把问题空间

JAVA语言的11个特性

java语言的11个特性: java语言是一种简单的(Simple),面向对象的(Object-Oriented),分布式的(Distributed),解释性的(interpreted),健壮的(Robust),安全的(Secure),结构中立的(Architecture-neutral),可移植的(Portable),高性能的(high-performace),多线程的(multi-threaded),动态的(dynamic)语言. #1,简单 风格类似c++,基本语法与C相似 摒弃了C++中

20_Shell语言———VIM编辑器基础知识三之窗口属性定制、配置文件及查找替换功能

Vim编辑器可以让用户按照需求来定制一些使用属性. 一.窗口属性定义 1)显示行号 行号不是内容,只是用来帮助用户确认文本所在的行.在vim编辑器中,如果要显示行号,可以在末行模式下输入: set number 如果想关闭,则可以在功能名称前面加上no,即: set nonumber 命令可以被简写,如set number 可以简写为 set nu:set nonumber 可以简写为 set nonu. 注意,上述设定仅对当前vim的进程有效,一旦当前进程关闭,这些设定就会失效,如果要使设定永

运维基础--Linux中bash的基础特性

bash 的基础特性如下: 一.命令的别名--alias 命令 用来定义和显示命令的别名,unalias撤销定义的别名:但是要注意以下几点: 1.alias的效果仅限于当前shell的生命期: 2.如果修改.bashrc配置文件,其中保存的别名不会立即生效,只有在重新加载该文件的内容后,才会生效且永久生效: 3.为了能够保证设置的别名有效,通常两种操作都要做: 二.命令历史 shell进程会其会话中保存此前用户提交执行过的命令,history是shell的内置命令   1.命令语法格式: his