開発者の介入なしにこれを変更するものを本当に作成する必要がありAppDelegate、xcodeprojとnibを変更できるが、ソースは変更できない場合は、それを行う方法があります。
まず、クラスがコンパイルされ、クラスのインスタンスがnibに作成されることを確認します。
さて、これがあなたがすることです:
-[AHHackClass applicationDidFinishLaunching]余分なことを行うメソッドを定義してから、を呼び出します[self originalApplicationDidFinishLaunching]。
- では
-[AHHackClass awakeFromNib:]、objcランタイム呼び出しを使用して-[AHHackClass applicationDidFinishLaunching]メソッドをアプリケーションデリゲートにコピーし、-[originalApplicationDidFinishLaunching]メソッドスウィズリングを使用して2つのメソッドの実装を交換します。
- スウィズルする場合も同じようにし
applicationWillTerminateます。
JRSwizzleメソッドのスウィズリングをはるかに簡単にするコードについては、MethodSwizzlingCocoaDevでいくつかの背景を参照してください。
ただし、これを行うにははるかに簡単な方法があるかもしれません。余分なものをアプリのデリゲートapplicationDidFinishLaunchingとapplicationWillTerminateメソッドから呼び出す必要が本当にあるのでしょうか。で通知をリッスンし、そこで処理するように設定することはできませんawakeFromNibか?
そして、何らかの理由でそれができない場合は、開発者への指示に行を入れて、開発者のメソッドからメソッドを呼び出すことができますapplicationDidFinishLaunchingか?