iOS Xcode:在Objective-C中访问Ivar的编译器错误

Nat*_*olz 5 c xcode objective-c clang ios

我正在一个现有的大型Objective-c代码库中工作,目前正在编写单元测试.该项目广泛使用实例变量.

我写了一个方法来抓住伊娃的东西.它在同一个项目中的另一个单元测试中工作,但在这种情况下不起作用.

码:

-(id)getObjectForIvarNamed:(NSString *)ivarNameString
 {
    const char *ivarName = [ivarNameString UTF8String];

    Ivar ivarValue = class_getInstanceVariable([textFieldOverlay class], ivarName);
    id objectAtIvar = object_getIvar(textFieldOverlay, ivarValue);

    return objectAtIvar;
}
Run Code Online (Sandbox Code Playgroud)

编译器在从Ivar ivarValue以下错误开始的行处抱怨:

"Declaration of 'Ivar' must be imported from module 'ObjectiveC.runtime' before it is required"

对此错误代码的网络搜索会出现零点击.不知道为什么它在另一个文件中工作,两个XCUnitTest类之间的标题看起来都一样.

Nat*_*olz 13

永远不会失败,一旦我输入问题就找到答案.但是,我还没有发布.因为在网络搜索中找不到这个错误,我想我应该发布它,所以那里有一个实例.项目的类我在工作测试类中测试导入了objective-c运行时头,我想在输入问题后检查测试类.我认为这是一个标题问题,但在导入的类中没有看到它.学习时刻.

要导入objective-c运行时标头并根除此警告,请添加#import <objc/runtime.h>到标头.做完了.