我想將支持iOS 9中引入的新的3D Touch快速操作添加到我的iOS 8應用程序。我知道我需要使用弱鏈接的方法,但問題是我不知道爲應用程序委託方法執行此操作的正確語法。如何弱化iOS應用程序委託方法的鏈接?
爲了處理快速操作,我的應用程序委託需要實現新的application:performActionForShortcutItem:completionHandler:
方法,但是以弱連接的方式執行此操作的語法是什麼,它不會在iOS 8上崩潰?我得到了這個:
// iOS 9 only...
if ([UIApplicationDelegate instancesRespondToSelector:
@selector(application:performActionForShortcutItem:completionHandler:)]) {
// How do I access the method's shortcutItem and completionHandler arguments from here?
}
正如你可以看到我使用Objective-C而不是Swift。
您不需要爲該方法做任何特殊的事情。只需實現它,在iOS 8系統將不會調用它;你的代碼甚至不會運行。它什麼都不會做。如果你實現了' - (void)appleDontEverCallThis {NSAssert(NO,@「」); '也是。對於可能存在或可能不存在的整個_classes_,您只需要弱鏈接。 –
@JoshCaswell非常好,謝謝!如果你添加你的評論作爲答案,那麼我會接受它。 –