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

时间:2014-02-04 17:48:58

标签: 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个属性)

手动设置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;
}

1 个答案:

答案 0 :(得分:2)

我只有一个实际属性,以避免混淆和名称冲突。例如:

property (getter=oldProperty, setter=setOldProperty:) MyClass *newProperty;

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