Создавая свойства в Obj-C, как мне написать Getter по умолчанию? - PullRequest
1 голос
/ 30 января 2012

Я только начинаю изучать Objective-C, одну вещь, которую я пытаюсь выучить, это хорошее использование собственности.В настоящее время я пытаюсь создать некоторые свойства с помощью пользовательских сеттеров.Вот как далеко я продвинулась:

@interface MyClass : NSObject
@property (nonatomic, assign) int myNumber;
@end

@implementation MyClass
@dynamic myNumber;

- (int)myNumber {
    return ???;
}

- (void)setMyNumber:newNumber {
    myNumber = newNumber;
    // custom stuff here
}

Я действительно просто хочу реализовать пользовательский установщик, я в порядке с установщиком по умолчанию.Тем не менее, как я могу получить доступ к переменной напрямую?Если я добавлю «return self.myNumber», разве это не вызовет метод getter и бесконечный цикл?

Ответы [ 2 ]

2 голосов
/ 30 января 2012

Функции доступа к свойству вызываются только при использовании нотации x.p. Вы можете получить доступ к переменной экземпляра с помощью свойства p (в Objective C все члены имеют переменные экземпляра класса в области видимости). Вы можете, если вы действительно хотите, также получить доступ через обозначение указателя ->. Итак, любой из этих двух:

return p;

return self->p;

Однако вам не нужно использовать @dynamic здесь. @synthesize умный, и будет создавать значения по умолчанию, только если вы их не предоставили. Так что не стесняйтесь просто

@synthesize p;

Который будет создавать геттер, но не сеттер в этом случае.

0 голосов
/ 30 января 2012
- (int)myNumber {
    return myNumber;
}
...