只是注意,你连接的代码是在我看来不好的做法,因为他们应该在头一个只读属性,然后就重新声明其作为类扩展不只读。
这一边:
- 是它通常把性能的.m文件,即使它里面写@interface(这对我来说是属于.h文件)?
如果在头一个只读属性,并要添加一个setter方法在实现文件中,供内部使用,那么你可以重新声明属性的一类延伸和setter方法是为你创造。因此,你不必自己编写二传手。
在你的情况,程序员有一个属性与getter和setter,但只想公开暴露getter方法。
- 为什么有一个未实现的存取方法(或者是别的什么?)。 @property自动创建访问器方法,所以这似乎是无用的。只是为了让人能评论该方法吗?
访问器方法实际上并未实现,它只是自动创建的。 @property声明与最新版本的LLVM一起经历一个称为自动合成的过程。这种自动合成将查看@property声明并为其生成相应的setter和accessor方法。
程序员只是想公开暴露getter方法,这就是为什么他们把它放在公共类接口。
下面是自动生成的getter和setter方法的一个例子:
@interface MyClass()
@property (nonatomic) int integerOne;
@property (nonatomic, readonly) int integerTwo;
@property (nonatomic, readonly, getter = myIntegerThree) int integerThree;
@end
什么,这些将做如下:
integerOne:生成名为_integerOne
的实例变量,创建一个名为integerOne
getter方法和创建名为setIntegerOne:
的设置器方法
integerTwo:生成名为_integerTwo
的实例变量,创建一个名为integerTwo
integerThree getter方法:生成一个名为_integerThree
的实例变量,创建一个名为getter方法myIntegerThree
您可以通过只实现自动生成的方法避免了autosynthesis 。如果你实现了所有的自动生成方法,你也必须自己综合实例变量。例如,如果我声明只读属性,然后重写自动创建的获取器,则必须将@synthesize property=_property;
置于实现文件的顶部,以便我可以获取名为_property
的实例变量。