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

ohh*_*rob 1 iphone objective-c

我的目标是实现3.x SDK版本与UIImagePickerController及其allows(Image)Editing属性的兼容性.

// SDK 2.0 to 3.0
myImagePickerController.allowsImageEditing = YES;

// SDK 3.1
myImagePickerController.allowsEditing = YES;
Run Code Online (Sandbox Code Playgroud)

一些研究揭示了一些客观方法,但是处理弃用方法的最佳实践是什么?

  1. performSelector或者NSInvocation用于非对象参数

  2. #define 途径

  3. 任何其他推荐的策略......

Dav*_*ong 9

NSString * key = @"allowsEditing";
if ([myImagePickerController respondsToSelector:@selector(setAllowsImageEditing:)]) {
  key = @"allowsImageEditing";
}
[myImagePickerController setValue:[NSNumber numberWithBool:YES] forKey:key];
Run Code Online (Sandbox Code Playgroud)