objc-runtime.h/runtime.h/NSObjCRuntime.h的区别

objc-runtime.h 中代码:

#include

#include

message.h封装着objc_msgsend(),objc_msgsendSuper()等方法

所以想要使用以上方法得引入objc-runtime.h

runtime.h 就是我们平时使用runtime机制常调用的头文件

NSObjCRuntime.h它和runtime.h一样都引用了

TargetConditionals.h和objc/objc.hNSO...中全是宏定义和预编译指令

核心代码:

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64

typedeflongNSInteger;

typedefunsignedlongNSUInteger;

#else

typedefintNSInteger;

typedefunsignedintNSUInteger;

#endif

由此看,NSO...主要做不同设备上NSInteger类型切换的。

欲编译指令翻译:(可能不太准确,如果有错期待你的指点)

#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64

设备 为64位 或 使用的操作系统是嵌入式的并且使用的不是苹果系统 或 是win32位系统 或 创建时是32位但支持64位

你可能感兴趣的:(objc-runtime.h/runtime.h/NSObjCRuntime.h的区别)