gpt4 book ai didi

ios - 在iOS/macOS上处理过时的现代方法

转载 作者:行者123 更新时间:2023-12-01 19:42:55 25 4
gpt4 key购买 nike

如何抑制可用性宏中的弃用警告?我知道可用性是检查新API的好方法,但是我在努力抑制不赞成使用的警告方面颇为挣扎。除了下面提到的以外,我还有什么选择? (1.实用指令2.performSelector)

MyModel *model;
if (@available(macOS 10.13, *)) {
NSError *error;
model = [NSKeyedUnarchiver unarchivedObjectOfClass:[MyModel class] fromData:metadata error:&error];
if (error) {
[[NSAlert alertWithError:error] runModal];
}
} else {

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated"

model = [NSKeyedUnarchiver unarchiveObjectWithData:metadata];

#pragma clang diagnostic pop
}

或者使用抑制警告
if ([NSKeyedUnarchiver respondsToSelector:@selector(unarchiveObjectWithData:)]) {
model = [NSKeyedUnarchiver performSelector:@selector(unarchiveObjectWithData:) withObject:metadata];
}

最佳答案

仅当使用的API在目标的“部署目标”或更早之前就已弃用时,您才会收到“弃用”警告。

从macOS 10.14开始不推荐使用NSKeyedUnarchiver unarchiveObjectWithData。仅当目标的Deployment Target为macOS 10.14或更高版本时,您才会收到弃用警告。但是您发布的代码意味着您希望支持macOS 10.12或更早版本。
NSKeyedUnarchiver unarchivedObjectOfClass:fromData:error:已在macOS 10.13中添加。

如果您确实只想要macOS 10.13或更高版本的Deployment Target,则不需要if (@available(macOS 10.13, *))else。只需使用新的API即可完成。

问题中的代码(减去编译指示)仅在要支持macOS 10.12或更早版本时才应使用。然后,需要将目标的“部署目标”设置为macOS 10.12或更早版本。在这种情况下,您不需要编译指示,也不会收到任何弃用警告。

关于ios - 在iOS/macOS上处理过时的现代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52631041/

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