【发布时间】:2018-04-12 21:27:57
【问题描述】:
选择了具有“保留(或强)”属性的属性进行合成
这是从 xcode 9.2 更新到 xcode 9.3 后出现的新错误。在构建我的测试项目时会发生这种情况,我的一个变量抛出了这个错误:
@property (nonatomic, retain) NSNumber* myVariable;
在这个旧代码库中,这一直是一个“保留”属性,有没有人知道为什么突然出现错误?
附加信息:
整个项目中有几个同名的变量,在各种@protocol 文件中都以相同的方式定义。这些协议都在某个时候#import 到测试项目中,当它尝试构建时会抛出错误。
我可以提供其他信息吗?
编辑
在使此错误可重新创建的过程中,很明显该错误是由于项目中的重复变量名称之一具有“只读”属性,而不是其他变量具有的“保留”属性。我发布娱乐和答案,以防其他人有旧项目或错字引发相同的错误。
这可以重新创建:
- 创建一个新的单视图 ios 项目
- 使用目标 C 并包含单元测试
- 添加一个包含给定“myVariable”的@protocol 头文件
- 添加与第一个匹配的第二个@protocol 头文件,然后将“保留”更改为“只读”
- 添加一个新的 NSObject
@interface MyObject : NSObject <MyProtocol, MyProtocol2> - 在MyObject的实现中
@synthesize myVariable; - 运行单元测试 - 应该会出现错误
【问题讨论】:
-
“我可以提供其他信息吗?”绝对地。提供足够的信息让我们自己看到问题。只需创建一个空项目,看看必须投入什么才能使问题发生。然后告诉我们如何做到这一点。
-
@matt 我知道如果我有时间重新创建我会解决问题,不幸的是上周没有时间,希望其他人也遇到同样的问题。现在已经添加了这些步骤。
-
既然您似乎已经回答了自己的问题,您可以发布您的解决方案作为答案。可以在 Stack Overflow 上回答您自己的问题。
标签: objective-c xcode