[英]Further clarification of _property after readonly attribute?
在接口部分設置readonly屬性時,“禁用”屬性的setter方法。 我需要澄清一下:
如果我們的屬性是readwrite,何時使用_propertyName?
另外我理解我們使用setter方法進行一定程度的抽象,而不是僅使用_propertyName分配值。 還有其他原因不使用_propertyName嗎?
以下是一些示例代碼。 謝謝。
接口部分
@property (nonatomic, readonly) NSString *licensePlate;
@property (nonatomic, readonly) NSString *bodyColor;
實施部分
-(id) initWithCarFeatures {
self = [super init]
if (self) {
_licensePlate = @"XSHJDS8687";
_bodyColor = @"blueColor";
}
return self;
}
關鍵是“封裝”。 沒有其他文件可以直接設置屬性。 該屬性只能從給定文件中設置,例如,使用init
或使用專門方法。
大多數人會告訴你,你應該只在init
方法, dealloc
(如果你沒有使用ARC)中直接使用_property
,當然,如果你正在實現自己的setter和getter。 即使該屬性被聲明為readonly
,通常readwrite
在類擴展中聲明它為readwrite
。 因此,對於其他文件,它將保持readonly
,但是對於聲明它的實現文件(類)將進行readwrite
。
許多原因,例如“繼承” - 設置者可以被覆蓋。 對於copy
屬性,復制由setter處理。 使用MRC(不是ARC),setter甚至更重要(它們處理保留和釋放)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.