Это ответ № 1 в Google, и я полагаю, что есть несколько справедливых случаев, когда использование устаревшего метода полезно и когда вы хотите избежать предупреждений, чтобы сохранить сборку "чистой". Это решение вдохновлено: http://vgable.com/blog/2009/06/15/ignoring-just-one-deprecated-warning/
Идея состоит в том, чтобы объявить новый протокол, который имеет тот же метод (но, конечно, не устарел), и привести объект к этому протоколу. Таким образом, вы можете вызывать метод, не получая предупреждения и не избавляясь от всех предупреждений об устаревании.
Пример. Если вы хотите интегрировать TestFlight в свое приложение, в документации SDK предлагается передать uniqueIdentifier устройства, находясь в режиме бета-тестирования. Это может помочь отследить, у какого тестера были проблемы. Apple не рекомендует этот метод (и они не позволят вам отправить приложение), но я считаю, что это хороший пример использования устаревшего метода.
В вашем приложении Делегат:
/* This is to avoid a warning when calling uniqueIdentifier for TestFlight */
@protocol UIDeviceHack <NSObject>
- (NSString*) uniqueIdentifier;
@end
@implementation MyAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[TestFlight takeOff:@"Your-Testflight-team-id"];
// TODO: Remove this in production (forbidden APIs) - Used here to improve beta reporting.
[TestFlight setDeviceIdentifier:[(id<UIDeviceHack>)[UIDevice currentDevice] uniqueIdentifier]];
// ...
}