views:

454

answers:

2

My goal is to achieve compatibility across 3.x SDK versions for UIImagePickerController and it's allows(Image)Editing property.

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

// SDK 3.1
myImagePickerController.allowsEditing = YES;

Some research reveals some objective-c approaches, but what is considered best practice for handling deprecated methods?

  1. performSelector or NSInvocation for non-object arguments

  2. #define approach

  3. Any other recommended strategies...

A: 

wrap them in a @try @catch block to ensure a working feature regardless of a deprecated method.

coneybeare
s/depreciated/deprecated/ ;-)
Sixten Otto
Exceptions in Cocoa and Cocoa Touch should only be used for non-recoverable errors.
bbum
+6  A: 
NSString * key = @"allowsEditing";
if ([myImagePickerController respondsToSelector:@selector(setAllowsImageEditing:)]) {
  key = @"allowsImageEditing";
}
[myImagePickerController setValue:[NSNumber numberWithBool:YES] forKey:key];
Dave DeLong
Thanks Dave. Great answer. I'll put that one under #3 :)
ohhorob
Thanks, I'm using it. Marked up.
Adam Eberbach