我试图将非ARC项目转换为使用ARC,但由于某种原因,它抱怨所有实例变量的使用。
@property (nonatomic,retain)id myvariable;结果:
Error : "Use of undeclared variable _myvariable"在我的代码中有一些地方,我不想修改保留计数,但是要对属性进行赋值。所以我使用一个实例变量。
添加@syhtnesize myvariable =_myvariable解决了这个问题,但我正在设法找出解决这个问题的正确方法。
可能的解决办法:
1)添加synthesize
2)用self.myvariable替换实例变量的使用,并将属性赋值。
编辑:问题ARC errors的扩展
发布于 2014-01-16 22:28:32
听起来,您已经实现了向后兼容性功能。
由于Xcode 4.4属性声明不再需要@synthesize语句,而没有该语句,编译器将自动生成_propertyName实例变量。
但是,使用@synthesize propertyName,就像在Xcode 4.4之前一样,编译器将自动生成一个propertyName -注意到没有下划线实例变量。
警告您“使用未声明变量_myvariable”的编译器消息表明,您已经将代码切换为使用下划线,但仍然有一些@synthesize myvariable语句。
使用@synthesize myvariable = _myvariable可以直接为实例变量指定要使用的名称,从而解决了问题,但是完全删除@synthesize是通常的方法。
发布于 2014-01-16 20:32:40
带着所有弧形的东西
@property (nonatomic, strong) Something *myVariable;双方都可以访问
self.myVariable;和
_myVariable;不需要使用@合成
发布于 2014-01-16 20:33:31
这取决于你需要什么。如果你申报财产:
@property (strong) NSString *myvariable;您想要将私有ivar的名称更改为必须添加的不同的_myvariable
@synthesize myvariable = _myVarNewName
但是,如果您想使用前面带有下划线的完全相同的名称,只需删除@合成(适用于iOS 6和更高版本),编译器就可以执行其余的操作,这样就可以访问私有变量(如_myvariable )或公共变量(如self.myvariable )。
https://stackoverflow.com/questions/21172172
复制相似问题