Свойства и методы доступа в Objective-C

Вызывает ли следующий код функцию доступа «set» или он напрямую изменяет указатель myMember?

аКласс.h

@interface MyClass : NSObject {
    NSArray *myMember;
}

@property (nonatomic, retain) NSArray *myMember;

аКласс.с

@implementation GameplayScene

@synthesize myMember;

- (id) init {
    if ( (self = [super init]) )
    {
        myMember = [NSArray array];
    }
}

Другими словами, я хотел бы знать, вызывается ли метод setMyMember или изменяется ли указатель myMember напрямую.

Точно так же myMember = [NSArray array] идентично self.myMember = [NSArray array]?


person codeperson    schedule 21.05.2011    source источник
comment
Возможный дубликат Разница между self.ivar и ivar? и многое другое.   -  person jscs    schedule 22.05.2011
comment
Спасибо @ Джош Касвелл. Я огляделся, но, думаю, недостаточно далеко.   -  person codeperson    schedule 22.05.2011


Ответы (1)


Без обозначения self. переменная экземпляра изменяется напрямую. С его помощью вызывается установщик свойства (и, поскольку вы сделали его свойством retain, новый указатель, на который он устанавливается, будет отправлено сообщение retain).

См. документацию Apple по объявлению и доступ к свойствам.

person BoltClock    schedule 21.05.2011