Что такое сеттеры и геттеры? - PullRequest
3 голосов
/ 22 октября 2010

У меня нет четкого понимания Setters и Getters для target-c.Может ли кто-нибудь дать хорошее руководство для начинающих?Я заметил, что это вступает в игру при попытке доступа к переменным в другом классе, что я пытаюсь сделать прямо сейчас.У меня есть два класса, скажем, A и B. У меня есть переменная NSString в A с переменной @property (retain) NSString *.Тогда я продолжаю и синтезирую это.Теперь, когда представление загружается в класс, я устанавливаю значение для переменной "привет".Теперь я хочу получить доступ к строке из класса B. Я импортировал класс A и инициализировал его следующим кодом:

AClass *class = [[AClass alloc] init];
NSLog(@"Value:%@", class.variable);
[class release];

Однако в отладчике он возвращает значение "(null) ", чего я не очень понимаю.Если бы кто-то мог привести меня на правильный путь, я был бы очень признателен.

Спасибо,

Кевин

Ответы [ 2 ]

7 голосов
/ 22 октября 2010

Интересующий вас раздел - Заявленные свойства .

Интерфейс

b должен выглядеть следующим образом:

@interface b : NSObject {
    NSString *value;
}

@property (nonatomic, retain) NSString *value;

- (id) initWithValue:(NSString *)newValue;

@end

Ваша реализация b должна выглядеть примерно так:

@implementation b

@synthesize value;

- (id) initWithValue:(NSString *)newValue {
    if (self != [super init])
        return nil;

    self.value = newValue;

    return self;
}

@end

Который вы могли бы затем назвать как:

b *test = [[b alloc] initWithValue:@"Test!"];
NSLog(@"%@", test.value);
1 голос
/ 22 октября 2010

Руководство Начало работы с iOS в Справочной библиотеке iOS описывает материалы для чтения, которые вы должны пройти, чтобы закрепить основы, подобные этой.Руководства Apple четко написаны и обстоятельны, и вы окажете огромную услугу, уснувшись и просто прочитав их.

...