选择了属性“保留(或强)”的属性进行综合

时间:2018-04-12 21:27:58

标签: objective-c xcode

选择了具有“保留(或强烈)”属性的属性进行综合

这是从xcode 9.2更新到xcode 9.3后出现的新错误。在构建我的测试项目时会发生这种情况,我的一个变量就是抛出这个错误:

@property (nonatomic, retain) NSNumber* myVariable;

在这个旧的代码库中,这已成为很长一段时间的“保留”属性,有没有人知道为什么会突然出现错误?

其他信息:

整个项目中有几个相同的名称变量,在各种@protocol文件中都以相同的方式定义。这些协议都在#import进入测试项目,在尝试构建时会抛出错误。

我可以提供其他信息吗?

修改

在使这个错误重新创建的过程中,很明显错误是由于项目中的一个重复变量名称具有'readonly'属性而不是其余的'retain'。我正在发布娱乐和答案,以防其他人有旧项目或拼写错误抛出相同的错误。

可以重新创建:

  • 创建新的单一视图ios项目
  • 使用目标C并包含单元测试
  • 添加一个包含给定'myVariable'
  • 的@protocol标头文件
  • 添加第二个@protocol头文件,然后将'retain'更改为'readonly'
  • 添加新的NSObject @interface MyObject : NSObject <MyProtocol, MyProtocol2>
  • 在MyObject @synthesize myVariable;
  • 的实现中
  • 运行单元测试 - 应出现错误

1 个答案:

答案 0 :(得分:1)

问题归结为没有意识到具有相同名称的变量之一是readonly属性而其他变量都保留。似乎xcode 9.2和之前从未捕获过这样的错误,但xcode 9.3现在也是如此。我的解决方案是更改readonly以匹配保留变量。

对其他人更好的解决方案可能是重命名readonly变量以表示它是唯一的。