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