Я хочу получить имя аргументов текущей функции, в которой я состою, чтобы я мог загрузить загрузку этого объекта из файловой системы, если он отсутствует в текущем экземпляре. (например, если [foo dictTest] недоступен, я хочу загрузить его ранее сохраненную версию plist именно в это ivar)getArgument of NSInvocation текущего метода всегда возвращает null
Я хочу найти файл, предоставив имя 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.
Почему? Возможно ли, что мне придется ждать полного вызова этого текущего метода, в котором я есть, или на самом деле лучше создать прокси-функцию, которая неявно вызывает мой метод класса с помощью вызова, который ест имя ivar, предоставленное setArgument, так что Я могу использовать эту строку аргументов, как я хочу?
Большое спасибо!
P.S .: В этом конкретном примере я не хочу использовать KVC для идентификации ivar и возврата его.
Привет, Дэйв, большое спасибо за ваше объяснение. Я, конечно же, не понял понятия, стоящего за этим :) То, что я сделал сейчас, это использовать KVC a, я создал его как свойство. Тем самым я мог бы создать метод, который берет строку и проверяет, имеет ли значение self для этого ключа. Если тогда было nil, я бы попытался загрузить ранее сохраненный объект и установить его как значение для ключа. Идея этого заключалась только в том, чтобы иметь прокси-метод, который бы внутренне проверял достоверность члена и, если нужно, перечитывал его из кеша файлов. Еще раз спасибо! – Nonlinearsound