Правильный способ доступа к члену / свойству ViewController из файла класса Objective-C? - PullRequest
0 голосов
/ 29 июля 2011

Мне просто было любопытно, как правильно получить доступ к свойству, которое я объявил в ViewController, и использовать его в файле класса Objective-C?Я включил файл .h, но этого недостаточно.Я знаю, что я мог бы просто переместить его делегату приложения и получить к нему доступ в обоих местах, но должен быть более чистый и прямой путь.

Редактировать для ясности:

nrViewController.h:

@interface nrViewController : UIViewController {

    NSMutableArray *checkpoints;
}

@property (nonatomic, retain) NSMutableArray *checkpoints;

nrViewController.m

@implementation nrViewController
@synthesize checkpoints;

//A bunch of code, some of which actually uses checkpoints

@end

XMLParser.m:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {

    if([elementName isEqualToString:@"Checkpoints"]) {

        checkpoints = [[NSMutableArray alloc] init];

    }

Это не полностью завершено, так как я хотел бы, чтобы мы использовали его в других местах, но единственное другое место за пределами XMLParser.m было бы в nrViewControllerи я понимаю, как это сделать.Я хотел бы объявить и использовать переменную checkpoints в nrViewController и использовать ее в XMLParser.m, а также загружать в нее данные анализа и затем манипулировать ими.Я надеюсь, что это проясняет ситуацию немного больше, но если потребуется больше информации, я был бы рад объяснить более подробно.

Спасибо!

-Кароли

1 Ответ

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

Если честно, трудно следовать идее вопроса.

Если вы объявили свойство и синтезировали или закодировали геттеры / сеттеры, то оно должно быть доступно из других классов, пока вы пытаетесьчтобы получить его из объекта класса, в котором вы объявили свойство.

Если вы хотите использовать свойство в качестве статической переменной, касаясь только класса, а не объекта, тогда вы можетесделайте это, но вы должны либо определить эту переменную как статическую глобальную переменную и работать с ней напрямую, либо вы должны реализовать свои пользовательские статические методы getter / setter для этого свойства.Надеюсь, я не запутался в каком-то месте.

РЕДАКТИРОВАТЬ Наблюдения в соответствии с предоставленным кодом: Вы не объявили собственность, чувак.Для вашей переменной вы должны использовать

@property (nonatomic, retain) NSMutableArray *checkpoints;

(это находится под закрывающей фигурной скобкой в ​​@interface. А в файле .m вы должны сделать @synthesize checkpoints;

(после @implementation nrViewController {)

Кроме того, получите доступ к своей переменной следующим образом:

yourNRViewControllerInstance.checkpoints = ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...