ios - 将弃用的属性重新分配给新属性 objective-c

标签 ios iphone objective-c

我有一个属性,我想更改它的名称。基本上我希望旧属性返回/设置新属性的值,这样现有代码就不会中断,但它会发出警告以使用新名称。

这是在我的头文件中:

@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;

您还可以选择创建方法 newPropertysetNewProperty:。您还可以在希望人们停止使用的 getter 和 setter 中加入一些 #warning 语句。

关于ios - 将弃用的属性重新分配给新属性 objective-c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21559697/

相关文章:

iphone - 如何使用setValue :forKey: function with NSArray

iphone - 如何在 iphone 应用程序中创建自定义 UIAlertView

ios - 将数据从 iOS 查询传递到 Watch

iphone - 第一个 UIView 纵向,第二个 UIView 横向

iphone - 如何将带有图像的数据存储在本地以供iPhone以后使用

ios - SDWebImage 正在部分加载,即使在终止应用程序后也不会加载回来

ios - 下载数据后 TableView 未更新

iphone - 检查日期是否在同一日历日

ios - 文本少于 10 个字符的 UITextView 挂起 iOS 9

ios - 如何在运行时检查核心数据属性类型?