我有一个属性,我想更改它的名称。基本上我希望旧属性返回/设置新属性的值,这样现有代码就不会中断,但它会发出警告以使用新名称。
这是在我的头文件中:
@property (nonatomic, strong) MyClass *newProperty;
@property (nonatomic, strong) MyClass *oldProperty __attribute__((deprecated));
为了让 oldProperty 的 getter 和 setter 只在实现中设置/返回 newProperty 的值,我想做类似的事情
@synthesize oldProperty=_newProperty;
这会引发错误“oldProperty 和 newProperty 都声明实例变量 _newProperty”。实现我想做的事情的最佳方式是什么? (我弃用并重命名了大约 30 个属性)
手动设置 getters/setters 返回同样的错误
- (void)setOldProperty:(MyClass *)oldProperty {
_newProperty=oldProperty;
}
- (MyClass *)oldProperty:(MyClass *)oldProperty {
return _newProperty;
}
编辑:我在 BlackRiders 输入的帮助下使用的解决方案 ---------------------------------- ----------------------------
接口(interface):
@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;
}
最佳答案
为了避免混淆和名称冲突,我将只拥有一处不动产。例如:
property (getter=oldProperty, setter=setOldProperty:) MyClass *newProperty;
您还可以选择创建方法 newProperty
和 setNewProperty:
。您还可以在希望人们停止使用的 getter 和 setter 中加入一些 #warning
语句。
关于ios - 将弃用的属性重新分配给新属性 objective-c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21559697/