返回首页

Objective-C 基础

时间:2019-09-23 来源:原创/投稿/转载作者:管理员点击: 162

  Objective-C 是一种通用、高级、面向对象的编程语言。它扩展了标准的 ANSI C 编程语言,将 Smalltalk 式的消息传递机制加入到 ANSI C 中。目前主要支持的编译器有 GCC 和 Clang。

  1981年 Brad Cox 和 Tom Love 还在 ITT 公司技术中心任职时,接触到了 SmallTalk语言。Cox 当时对软件设计和开发问题非常感兴趣,他很快地意识到 SmallTalk 语言在系统工程构建中具有无法估量的价值。

  正是由于以上优势,在 Swift 推出之后,许多和 C 有直接交互的部分大多仍旧使用 Objective-C 编写。

  Objective-C 与其说调用对象的方法,不如说向对象传递消息更为精确。

  Objective-C 因为运行期才处理消息,允许发送未知消息给对象。同时空对象 nil 接受消息后默认为不做事,所以送消息给 nil 也不用担心程序崩溃。

  Objective-C 字符串由双引号包裹,并在引号前加一个@符号,如:

  在C语言中,使用 #include 导入入头文件。在Objective-C中,类似的指令 #import 保证一个文件只会被包含一次,类似于一般头文件中的:

  类的定义文件遵循 C 语言惯例以 .h 为后缀,实现文件以 .m 为后缀。

  定义部分,定义类的名称、数据成员和方法。 以关键字 @interface 开始,@end 结束:

  方法前面的 +/- 代表函数的类型:加号(+)代表类方法(class method),不需要实例就可以调用,与 Java 的静态方法相似。减号(-)即是一般的实例方法(instance method)。

  Objective-C 创建对象需通过 alloc 和 init 两个消息。alloc 是分配内存,init 则是初始化对象。 init 与 alloc 都是定义在 NSObject 里的方法,父对象收到这两个信息并做出正确回应后,新对象才创建完毕。

  协议中定义的方法分为必须实现的方法和可选实现的方法。协议中的方法默认必须实现,可选实现的方法以 @optional 为标识。

  分类可以给一个已经存在的类增加方法,而不用去改它的源码。类似于 Swift 和 Kotlin 中的扩展(extension)。

  比如,NSString 是 Objective-C 内置的系统类,我们创建一个它的分类以支持加法运算:

  如果想使某个对象继续存活,那就递增其引用计数(reatain);用完了之后,就递减其计数(release)。当计数为0时,系统就会将它销毁。

  简单地说,ARC 在编译时为代码在合适的位置加上 retain 和 release。

  属性(property)是 Objective-C 的一项特性,用于封装对象中的数据。实例变量一般通过“存取方法”(access method)来访问。其中,“获取方法”(getter)用于读取变量值,而“设置方法”(setter)用于写入变量值。

  点语法的本质还是方法调用,是一种编译器行为,编译器会自动进行转换,来判断调用 set 方法还是 get 方法。

【责任编辑:管理员】
随机推荐 更多>>