1. 相对于C/C++, Objective C尽可能地把一些动作推迟到运行时来执行。即尽可能动态地来做事情。 因此它不仅需要一个编译器,还需要一个运行时环境来执行编译后的代码。
2.Runtime分为Legacy和modern两个版本,一般来说,我们现在用的都是modern版本。
3.modern版本的一个显著特征就是“non-fraigle”, 即父类的成员变量发生改变时,子类不需要重新编译。
4.ObjC与runtime System在三个不同的层次进行交互:(1)通过ObjC源码 (2)通过NSObject定义的函数 (3)通过直接调用runtime functions。
5.Cocoa中大多数类都是NSObject的子类(NSProxy除外)。因此,在这个继承体系中,子类可以根据需求重新实现NSObject定义的一些函数,实现多态和动态性。比如description。
6.自省(introspection)
- (BOOL)isKindOfClass:(Class)aClass;
- (BOOL)isMemberOfClass:(Class)aClass;
- (BOOL)conformsToProtocol:(Protocol *)aProtocol;
+ (BOOL)instancesRespondToSelector:(SEL)aSelector;
+ (BOOL)conformsToProtocol:(Protocol *)protocol;
- (IMP)methodForSelector:(SEL)aSelector;
+ (IMP)instanceMethodForSelector:(SEL)aSelector;
- (void)doesNotRecognizeSelector:(SEL)aSelector;7.Runtime System 是一个动态共享库,位于 /usr/include/objc, 拥有一套公共的接口。由一系列函数和数据结构组成。开发人员可用纯C来调用一些函数来做编译器做的事情。或者扩展Runtime System。为开发环境制作一些工具等。
8. 发消息是ObjC程序中最经常出现的表达式,而该表达式最终会被转化为objC_msgSend函数调用。
比如 [receiver message] <-> objc_msg
本文深入探讨了Objective-C编程语言及其运行时系统的特点,包括动态性、消息传递机制、类继承与自省功能。重点阐述了Objective-C如何通过运行时环境实现灵活的代码执行,并解释了其与C/C++的区别。详细介绍了如何在Cocoa框架下利用Objective-C进行高效编程。
259

被折叠的 条评论
为什么被折叠?



