如何使用(可能是非对象)参数解决已弃用的属性/方法?

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 方法,但处理已弃用方法的最佳实践是什么?

    performSelectorNSInvocation 用于非对象参数

    #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 中的异常只能用于不可恢复的错误。

以上是关于如何使用(可能是非对象)参数解决已弃用的属性/方法?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复已弃用的“按钮样式”

推荐替换已弃用的 call_user_method?

我应该如何在 Android 中使用/不使用已弃用的方法

在 Android 中,如何删除已弃用的通知变量?

在iOS 7中替换已弃用的sizeWithFont:

如何更改已弃用的 beginSheetForDirectory 方法