objective-c - 在Obj-C中创建Properties,默认的Getter怎么写?

标签 objective-c cocoa properties getter-setter

我刚刚开始学习 Objective-C,我想要学习的一件事是良好的属性使用。我目前正在尝试使用自定义 setter 创建一些属性。这就是我已经走了多远:

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

@implementation MyClass
@dynamic myNumber;

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

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

我真的只是想实现一个自定义的setter,我对默认的getter很满意。但是,如何直接访问该变量呢?如果我输入“return self.myNumber”,那不是会调用getter方法并无限循环吗?

最佳答案

仅当使用x.p 表示法时才会调用属性访问函数。您只需使用 p 即可访问支持该属性的实例变量(在 Objective C 中,所有成员都在作用域内具有类实例变量)。如果您确实愿意,也可以通过指针引用符号 -> 进行访问。因此,这两个中的任何一个:

return p;

return self->p;

但是,您不需要在此处使用@dynamic@synthesize 很聪明,如果您没有提供默认值,它只会创建默认值。所以请随意

@synthesize p;

在本例中,这将创建 getter,但不会创建 setter。

关于objective-c - 在Obj-C中创建Properties,默认的Getter怎么写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9063194/

相关文章:

objective-c - 在 UITableViewCell 上绘制阴影

cocoa - 在Mac上读取plist

ios - ARC双向关系

javascript - 是否可以在不使用 for in 循环的情况下迭代 js 对象的属性?

delphi - 当选择多个项目时,为什么某些属性在对象检查器中隐藏?

objective-c - GCDAsyncUdpSocket 多播获取 HTTP 412 响应

c++ - 从 C++ 方法调用 Objective-C 方法? [2]

iphone - 如何使用 iPhone SDK 为这样的图像制作动画?

iphone - CGLayer 和抗锯齿 CGPath

javascript - JS-遍历对象