Objective-C中的属性和访问器

jon*_*ley 0 class objective-c accessor

以下代码是否调用访问器"set"函数或myMember直接修改指针?

aClass.h

@interface MyClass : NSObject {
    NSArray *myMember;
}

@property (nonatomic, retain) NSArray *myMember;
Run Code Online (Sandbox Code Playgroud)

aClass.c

@implementation GameplayScene

@synthesize myMember;

- (id) init {
    if ( (self = [super init]) )
    {
        myMember = [NSArray array];
    }
}
Run Code Online (Sandbox Code Playgroud)

换句话说,我想知道是否setMyMember正在调用该方法,或者是否myMember正在直接修改指针.

同样,是否myMember = [NSArray array]相同self.myMember = [NSArray array]

Bol*_*ock 5

如果没有self.表示法,则直接修改实例变量.有了它,就会调用属性setter(因为你把它作为一个retain属性,它被设置的新指针将被发送一条retain消息).

请参阅Apple有关声明访问属性的文档.