Objective-C 中的属性和访问器 [英] Properties and accessors in Objective-C
问题描述
以下代码是调用访问器set"函数还是直接修改指针myMember
?
aClass.h
@interface MyClass : NSObject {NSArray *myMember;}@property (nonatomic, 保留) NSArray *myMember;
aClass.c
@implementation GameplayScene@synthesize myMember;- (id) 初始化 {如果((自我= [超级初始化])){myMember = [NSArray 数组];}}
也就是说,我想知道是setMyMember
方法被调用了,还是myMember
的指针被直接修改了.
同样,myMember = [NSArray array]
是否与 self.myMember = [NSArray array]
相同?
没有 self.
表示法,直接修改实例变量.使用它,属性设置器被调用(并且由于您将其设置为 retain
属性,因此将向其设置的新指针发送 retain
消息).>
Does the following code call an accessor "set" function or does it modify the pointer myMember
directly?
aClass.h
@interface MyClass : NSObject {
NSArray *myMember;
}
@property (nonatomic, retain) NSArray *myMember;
aClass.c
@implementation GameplayScene
@synthesize myMember;
- (id) init {
if ( (self = [super init]) )
{
myMember = [NSArray array];
}
}
In other words, I would like to know if the method setMyMember
is being called, or if the pointer of myMember
is being modified directly.
Likewise, is myMember = [NSArray array]
identical to self.myMember = [NSArray array]
?
Without the self.
notation, the instance variable is modified directly. With it, the property setter is called (and since you made it a retain
property, the new pointer that it's being set to will be sent a retain
message).
See Apple's documentation on declaring and accessing properties.
这篇关于Objective-C 中的属性和访问器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!