如何#import <NSObjCRuntime.h>使用objc_msgSend

Pio*_*pla 36 objective-c ios

我想导入运行时的头文件以使用objc_msgSend,但我得到:

error: NSObjCRuntime.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我应该在标题搜索路径中添加一些内容吗?

一二三*_*一二三 58

您需要包含<objc/message.h>(您将找到相关的标题/usr/include/objc)并链接到objc(/usr/lib/libobjc.dylib)库.


Max*_*kin 36

#import <Foundation/NSObjCRuntime.h> 确实有效

但你可能需要

#import <objc/runtime.h>
Run Code Online (Sandbox Code Playgroud)

像这样的Apple例子

UPD:由于iOS的7 #import <Foundation/NSObjCRuntime.h>替换成#import <objc/NSObjCRuntime.h>,但我建议使用#import <objc/runtime.h>反正

  • 方法`objc_msgSend`在`<objc/message.h>`中声明,而不是在`<objc/runtime.h>`中声明.因此,您将收到隐式声明库函数的警告. (2认同)