|
|
1
4
我不确定我是否理解你的问题,但如果你这样做:
当你打电话的时候,getter实际上被呼叫了
|
|
|
2
3
因此,在对象的情况下,@property声明是声明指向实例变量的指针的语法糖。“nonatomic”指的是自动创建的getter和setter的类型(在本例中为“非线程安全”)。“strong”是ARC增加变量保留计数的指标。 因此,当您声明:
这就是在类中真正创建的内容——只是指向隐藏实例变量的指针。
正如您在getter中看到的,您正在初始化_myArray指针以指向一个新的NSMutableArray:
然而,在setter中,您只是在更新指向已经创建的变量的指针。
这会向您的班级发送以下消息:
正如您所看到的,setter在大多数情况下不需要任何特殊的初始化。唯一要创建自定义setter的时间是要验证传入对象是否具有特殊的财产。一个人为的例子是检查NSMutableArray是否不大于10个对象:
最后,我想指出的是,您实际上可以使用短三元运算符和括号返回值来延迟实例化对象。例如,以下语句:
等于:
You can even macro this pattern into (WSM is my class prefix):
所以你可以这样写声明:
甚至使用 compound statement syntax 要重写您作为示例介绍的原始setter:
|
|
|
George Kim · 如何在iOS中模拟特定坐标空间中的触摸? 2 年前 |
|
|
BENG · 协调C++和Objective-C中结构的填充 2 年前 |
|
|
Community wiki · iPhone上ivar的继承问题 2 年前 |
|
|
Community wiki · 在OpenGL中显示YUV 2 年前 |
|
|
YosiFZ · pod更新依赖关系pod 2 年前 |
|
|
Community wiki · 查找iOS日历 2 年前 |