我在iPad应用中使用class_getProperty()
。我尝试了#import <objc/objc-runtime.h>
,它适用于iPad模拟器。
但是当我尝试在我的iPad上运行它时,Xcode说:
objc / objc-runtime.h:没有这样的文件或目录
和
警告:隐式声明函数'class_getProperty'。
答案 0 :(得分:8)
请注意,模拟器和设备之间存在差异。模拟器不会运行与设备完全相同的SDK。较低层实际上来自Mac SDK,这是有道理的,因为它是在mac上执行的。
但是,似乎有针对您具体问题的修复程序。你绝对应该尝试Jeff Lamarche在这篇文章中描述的修复:Device vs. Simulator
替换
#import <objc/objc-runtime.h>
通过
#import <objc/runtime.h>
#import <objc/message.h>
然后,要删除警告,请在所涉及的类的头文件中添加这两行:
#if (TARGET_OS_IPHONE)
- (NSString *)className;
+ (NSString *)className;
#endif
然后在实现文件中:
#if (TARGET_OS_IPHONE)
- (NSString *)className {
return [NSString stringWithUTF8String:class_getName([self class])];
}
+ (NSString *)className {
return [NSString stringWithUTF8String:class_getName(self)];
}
#endif