gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:16:17 24 4
gpt4 key购买 nike

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

这是在我的头文件中:

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com