我有一个属性,我想更改名称。基本上我希望旧属性返回/设置新属性的值,以便现有代码不会中断,但它会抛出警告以使用新名称。
这是在我的标题文件中:
@property (nonatomic, strong) MyClass *newProperty;
@property (nonatomic, strong) MyClass *oldProperty __attribute__((deprecated));
要使oldProperty的getter和setter在实现中设置/返回newProperty的值,我想做类似的事情
@synthesize oldProperty=_newProperty;
抛出错误'oldProperty和newProperty都声明实例变量_newProperty'。什么是实现我想做的最佳方式? (我正在弃用并重命名约30个属性)
手动设置getter / setter会返回相同的错误
- (void)setOldProperty:(MyClass *)oldProperty {
_newProperty=oldProperty;
}
- (MyClass *)oldProperty:(MyClass *)oldProperty {
return _newProperty;
}
编辑:我在BlackRiders输入的帮助下使用的解决方案--------------------------------- ----------------------------
接口:
@property (nonatomic, strong) MyClass *newProperty;
- (void)setOldProperty:(MyClass *)oldProperty __attribute__((deprecated));
- (MyClass *)oldProperty __attribute__((deprecated));
实现:
- (void)setOldProperty:(MyClass *)oldProperty {
_newProperty=oldProperty;
}
- (MyClass *)oldProperty {
return _newProperty;
}
答案 0 :(得分:2)
我只有一个实际属性,以避免混淆和名称冲突。例如:
property (getter=oldProperty, setter=setOldProperty:) MyClass *newProperty;
您还可以选择创建方法newProperty
和setNewProperty:
。您还可以在希望人们停止使用的getter和setter中输入一些#warning
语句。