直接访问实例变量

时间:2013-03-28 02:52:26

标签: objective-c clang

我从github https://github.com/0xced/XCDFormInputAccessoryView下载了XCDFormInputAccessoryView。我尝试在xcode中运行它并收到许多

的警告

实例变量“---”正在被直接访问。任何帮助?

- (void) setTextInputs:(NSArray *)textInputs
{
    // Some day, IBOutletCollection will be properly sorted, in the meantime, sort it!
    _textInputs = [textInputs sortedArrayUsingComparator:^NSComparisonResult(UIView *view1, UIView *view2) {
        return [@(view1.tag) compare:@(view2.tag)];
    }];
}

3 个答案:

答案 0 :(得分:3)

-Wno-direct-ivar-access添加到Build Settings下的警告标志。

答案 1 :(得分:2)

这是Cedric打开-Weverything标志的结果,这使LLVM产生迂腐警告。删除构建设置下的标记:

No more -Weverything

然后重新编译,错误应该消失。

答案 2 :(得分:2)

如果您希望保留尽可能多的警告,这是您可以在基础.xcconfig文件中使用的策略:

TWX_BASE_WARNING_EXCLUSIONS = -Wno-bad-function-cast -Wno-format-nonliteral -Wno-objc-missing-property-synthesis -Wno-pedantic -Wno-unused-macros -Wno-used-but-marked-unused -Wno-selector -Wno-direct-ivar-access

WARNING_CFLAGS = -Weverything $(TWX_BASE_WARNING_EXCLUSIONS) 

就个人而言,我已经堆叠了.xcconfig文件,因此其中的“base”与堆栈中的其他文件相对,

WARNING_CFLAGS = -Weverything $(TWX_BASE_WARNING_EXCLUSIONS) $(TWX_CONFIGURATION_WARNING_EXCLUSIONS)

和相同的策略用于管理搜索路径,预处理器定义等。