【发布时间】:2013-12-09 23:41:12
【问题描述】:
我目前正在开发一种需要调整 AppDelegate 应用程序的产品:didReceiveRemoteNotification:(我不想在 appDelegate 本身中调用我的新方法)。
问题是:swizzling 根本行不通。我之前已经成功地调配了好几次方法,而这一次,替换实现根本没有被调用。我想知道这是否是因为 appDelegate 方法的某些特殊性,因为这些方法是由系统调用的,而不是由应用程序调用的。
【问题讨论】:
-
我认为 Apple 不喜欢你调配他们的 API:stackoverflow.com/questions/7720947/method-swizzling-in-ios-5
-
根据定义,您在自己的应用程序中拥有应用程序委托的实现,因此无需进行调配。现在,如果您谈论的是调配其他应用程序的实现,那么,不,您不能那样做。
-
在您定义的类中调配方法没有多大意义。如果您不想要应用程序委托中的代码,请将其放在您从那里调用的其他方法中,或者发布其他对象收到的通知。
-
@Alex,您共享的链接不适用于此问题,因为该问题清楚地表明它试图交换 application:didReceiveRemoteNotification: 这不是由 Apple 实现的,它是记录在案的回调而不是实现(不像你的链接提到的dealloc。)
标签: ios iphone objective-c swizzling