如何使用(可能是非对象)参数解决已弃用的属性/方法?
Posted
技术标签:
【中文标题】如何使用(可能是非对象)参数解决已弃用的属性/方法?【英文标题】:How do I work around deprecated properties/methods with (possibly non-object) arguments? 【发布时间】:2009-10-25 18:38:53 【问题描述】:我的目标是实现 UIImagePickerController 跨 3.x SDK 版本的兼容性,它是 allows(Image)Editing
属性。
// SDK 2.0 to 3.0
myImagePickerController.allowsImageEditing = YES;
// SDK 3.1
myImagePickerController.allowsEditing = YES;
一些研究揭示了一些 Objective-C 方法,但处理已弃用方法的最佳实践是什么?
performSelector
或 NSInvocation
用于非对象参数
#define
接近
任何其他推荐的策略...
【问题讨论】:
【参考方案1】:NSString * key = @"allowsEditing";
if ([myImagePickerController respondsToSelector:@selector(setAllowsImageEditing:)])
key = @"allowsImageEditing";
[myImagePickerController setValue:[NSNumber numberWithBool:YES] forKey:key];
【讨论】:
谢谢戴夫。很好的答案。我会把那个放在 #3 下 :) 谢谢,我正在使用它。已标记。【参考方案2】:将它们包装在 @try @catch
块中,以确保无论使用哪种方法都可以正常工作。
【讨论】:
s/depreciated/deprecated/ ;-) Cocoa 和 Cocoa Touch 中的异常只能用于不可恢复的错误。以上是关于如何使用(可能是非对象)参数解决已弃用的属性/方法?的主要内容,如果未能解决你的问题,请参考以下文章