Objective-C 中的属性和访问器 [英] Properties and accessors in Objective-C

查看:38
本文介绍了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 消息).

请参阅 Apple 关于声明访问属性.

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆