Метод работает правильно при вызове из своего класса, но не иначе - PullRequest
4 голосов
/ 05 июля 2011

Я написал эту функцию в моем RootViewController.appRecord - это объект, содержащий атрибут XML.

- (NSString*) getString:(int)row{
    AppRecord *appRecord = [self.entries objectAtIndex:row];
    NSString *appName = appRecord.appName;

    return appName;
}

Я хочу снова использовать эту функцию, написав следующее:

RootViewController *record = [RootViewController new]; 
NSString *appsName = [record getString:0];

NSLOG(appsName);

После компиляции он ничего не возвращал, но он работает и возвращает appsName, если я использую эту функцию внутри класса RootViewController ([self getString:0]), поэтому я знаю, что с этой функцией нет проблем.Когда я пытался изменить return appName на return @"test", он работал и возвращал что-то, когда я обращался к нему из другого класса.

Это означает, что есть проблема с этим appRecord;он был возвращен внутри класса, но ничего не возвращает, когда я обращаюсь к нему из другого класса.

Как решить эту проблему?

Ответы [ 2 ]

5 голосов
/ 05 июля 2011

Вы получаете свой AppRecord от self.entries в экземпляре RootViewController record.Это означает, что если ваш инициализатор new не инициализирует и не заполнит свою переменную entries (массив по внешнему виду) перед вызовом getString:, он не сможет ничего возвратить, так как этот массив пуст.

Кроме того, я не знаю, хотите ли вы, чтобы ваш метод getString:(int) обращался к другому массиву, или проблема заключается в вашей инициализации RootViewController (более вероятно)

1 голос
/ 05 июля 2011

Возможно, я не понимаю ваш вопрос, но если вы полагаетесь на оператор NSLog, чтобы узнать, возвращает ли функция что-либо, вы должны изменить его на:

NSLog(@"%@", appsname);
...