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

iOS Xcode: Compiler error accessing Ivar in Objective-C

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

我写了一个小方法来获取ivar。它在同一个项目的另一个单元测试中工作,但在这种情况下不工作。

代码:

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

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

    return objectAtIvar;
}

编译器在 Ivar ivarValue 开头的行报错并出现以下错误:

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

对该错误代码的网络搜索结果为零。不确定为什么它在另一个文件中有效,headers 在两个 XCUnitTest 类.

之间看起来都一样

永不失败,输入问题后立即找到答案。 但是,我还没有 posted。因为这个错误在网络搜索中是不可能找到的,所以我想我应该 post 它,所以那里有一个实例。该项目的 class 我在工作测试中测试 class 导入 objective-c 运行时 header,我想在我输入问题后检查测试的 class .我认为这是一个 header 问题,但在导入的 class 中没有看到它。学习时刻。

要导入 objective-c 运行时 header 并消除此警告,请将 #import <objc/runtime.h> 添加到 header。完成,完成。