第一章: 熟悉OC
第一条: 了解OC的起源
一: OC面向对象语言特性
- OC 和Java, C++面向对象语言相似, 不过很多方面有所差别. 该语言使用"消息结构"(messaging structure)而非"函数调用"(function call), 俩者的区别看上去就像这样 :
// Message (Objective -C)
Object *obj = [Object new];
[obj performWith: parameter1 and:parameter2];
// Function Calling (C++)
Object *obj = new Object;
Obj->perform(parameter1, parameter2)
- 关键的区别在于: 使用消息结构的语言, 其运行时所执行的代码由运行环境来决定, 而使用函数调用的语言, 则由编译器决定.
- 如果上述代码中调用的函数是多态的, 那么在运行时会查出到底应该执行哪个函数实现, 而采用消息结构语言, 不论是否为多态, 总是在运行时才会去查找所要执行的方法.
二: OC的指针
- OC中的指针是用来指示对象的, 想要声明一个名为someString的变量, 令其指代某个对象, 加入类型是NSString * , 可用下面语法
NSString *somgString = @"hehe";
他声明了一个名为someString的变量, 类型为NSString *, 指向了@"hehe"这个对象
所有的OC对象都必须这样声明, 因为对象所占内存总是分配在 "堆空间" (heap space)中, 绝不会分配在 "栈"(stack)上, 不能在栈中分配OC对象
要点:
OC使用动态绑定消息结构, 也就是说, 在运行时, 才会检查对象类型, 接收一条消息后, 究竟应执行何种代码, 由运行期环境而非编译器决定
- OC为C添加了面向对象特性
声明: 以上大部分内容均来自 Effective Objective-C