【问题标题】:iOS Xcode: Compiler error accessing Ivar in Objective-CiOS Xcode:在 Objective-C 中访问 Ivar 时出现编译器错误
【发布时间】:2015-04-30 17:39:06
【问题描述】:

我正在一个现有的大型 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"

对此错误代码的网络搜索结果为零。不知道为什么它在另一个文件中起作用,两个 XCUnitTest 类之间的标题看起来都一样。

【问题讨论】:

    标签: ios objective-c c xcode clang


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多