現在のインスタンスに存在しない場合にファイルシステムからそのオブジェクトをロードする準備ができるように、現在の関数の引数の名前を取得したいと思います。(たとえば、[foo dictTest]が利用できない場合は、以前に保存したplistバージョンを正確にそのivarにロードしたい)
現在の関数の引数として指定したivar名を指定してファイルを検索したいと思います。
これは機能コードです:
-(NSDictionary*)getCachedDictionary:(NSDictionary*)dict{
NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[self methodSignatureForSelector:_cmd]];
NSString * firstArgument = nil;
[invocation getArgument:&firstArgument atIndex:2];
NSLog(@"Trying to get the objects ivar %@",firstArgument);
// right now during testing return nil
return nil;
}
コードがNSLogに到達するとすぐに、firstArgumentからnull値を取得します。
何故ですか?現在のメソッドが完全に呼び出されるのを待たなければならない可能性がありますか、それともsetArgumentで指定されたivar名を使用する呼び出しを介してクラスメソッドを暗黙的に呼び出すプロキシ関数を作成する方が実際には良いでしょう。その引数文字列を好きなように使用できますか?
よろしくお願いします!
PS:この特定の例では、KVCを使用してivarを識別して返すことはしたくありません。