我是Obj-C的新手,我想问为什么一切都需要写这样的东西?
@property (_something, _something) NSString* name;
@property表示什么? 为什么我们需要把_something放在括号中?
PS:我知道没有_something,它应该是非原子的,保留,复制等等。由于它有很多选项,所以我只是简单地用一个词来表示括号内的内容。 (我在哪里可以获得所有可用选项列表?)谢谢:D
答案 0 :(得分:2)
@property
表示您正在定义一个属性,该属性位于基本级syntactic sugar,允许您执行variable = object.property
和object.property = value
而不是variable = [object property]
}和[object setProperty:value]
。如果你真的想要,你可以跳过声明任何属性,直接声明getter和setter方法,运行时几乎不会注意到差异。
括号内的内容会修改属性。许多仅对在@implementation块中使用@synthesize
为您创建getter和/或setter实现的属性有用。例如,assign
(默认值)表示只设置了值集; retain
表示对象集将自动调用其retain
方法(并且前一个对象,如果有的话,将调用release
);并且copy
表示该对象将调用copy
。
可能的属性列表位于the documentation。
答案 1 :(得分:1)
@property
指令只是一个承诺,该类为给定的标识符提供访问器。指令后给出的选项(复制,非原子等)指定了访问器的行为方式。这就是它的全部内容。
相关语法包括指令@dynamic
和@synthesize
以及点表示法。这两个指令是互斥的,并告诉编译器您将提供访问器或编译器应分别提供访问器。点符号是Anomie提到的语法糖 - 它用于访问属性,但您不需要正式声明属性来使用它。