处理iOS/macOS上的不赞成意见的现代方法
如何抑制availability宏中的弃用警告?我知道可用性是检查新API的一个很好的方法,但我正在努力抑制不推荐警告。除了下面提到的以外,我还有什么其他选择?(1.pragma 2.性能选择器) 或者,使用以抑制警告处理iOS/macOS上的不赞成意见的现代方法,ios,objective-c,macos,deprecation-warning,Ios,Objective C,Macos,Deprecation Warning,如何抑制availability宏中的弃用警告?我知道可用性是检查新API的一个很好的方法,但我正在努力抑制不推荐警告。除了下面提到的以外,我还有什么其他选择?(1.pragma 2.性能选择器) 或者,使用以抑制警告 if ([NSKeyedUnarchiver respondsToSelector:@selector(unarchiveObjectWithData:)]) { model = [NSKeyedUnarchiver performSelector:@selector(u
if ([NSKeyedUnarchiver respondsToSelector:@selector(unarchiveObjectWithData:)]) {
model = [NSKeyedUnarchiver performSelector:@selector(unarchiveObjectWithData:) withObject:metadata];
}
仅当您使用的API在目标部署目标时或更早时被弃用时,才会收到弃用警告
NSKeyedUnarchiver unarchiveObjectWithData
从macOS 10.14开始就不推荐使用。只有当目标的部署目标是macOS 10.14或更高版本时,才会收到弃用警告。但您发布的代码暗示您希望支持macOS 10.12或更早版本
NSKeyedUnarchiver unarchivedObjectOfClass:fromData:error:
已添加到macOS 10.13中
如果您确实只想要macOS 10.13或更高版本的部署目标,则不需要If(@available(macOS 10.13,*))
或else
。只要使用新的API就可以了
只有在您希望支持macOS 10.12或更早版本时,才应使用问题中的代码(不包括pragmas)。然后,需要将目标的部署目标设置为macOS 10.12或更早版本。在这种情况下,您不需要pragmas,也不会收到任何弃用警告。是否要将您的方法标记为弃用?请重新阅读。对不起,我不明白。如果弃用是特定于操作系统版本的,则不应在
else
块中收到任何弃用警告。只是不要使用弃用的方法。或者,您可以通过将部署目标降低到未弃用的版本来抑制弃用警告。我认为您的部署目标现在是10.14。因此,您甚至不需要@可用(macOS 10.13,*)
检查。感谢您的澄清。我使用部署目标10.12,并在mojave下将其切换到10.14。
if ([NSKeyedUnarchiver respondsToSelector:@selector(unarchiveObjectWithData:)]) {
model = [NSKeyedUnarchiver performSelector:@selector(unarchiveObjectWithData:) withObject:metadata];
}