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。完成,完成。
我正在现有的大型 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。完成,完成。