[英]Is that “every property have a backing variable” true?
第一句本身是错误的。 它应该说...“在大多数情况下,属性由成员变量支持。
第二句声称是有效的例外。 是真的。
显然,第二句话是在谈论auto-sythensis。 您当然可以使用@synthezise为所有内容生成一个变量,也可以使用@dynamic告诉编译器不要这样做
您发布的第二段是正确的。 仅当编译器至少负责getter / setter方法中的一个时,实例变量才会自动合成。 如果您决定覆盖这两种方法,并且仍然希望有一个与您创建的属性一起使用的实例变量,则需要手动进行合成,如下所示:
@synthesize variableName;
请注意,如果按原样使用@synthesize子句(不带'='),则将创建的实例变量将具有完全相同的名称(在本例中为variableName
)。 如果您想为实例变量赋予与创建的属性不同的名称,则可以添加所需的任何名称,如下所示:
@synthesize variableName = someOtherName;
在这种情况下,属性名称将为variableName
,而实例变量名称将为someOtherName
。 约定是将实例变量命名为与属性相同的名称,仅在开头加下划线(在本例中为_variableName
)。 如果允许编译器为您创建变量,但又让它负责getter / setter方法中的至少一个,则它也是变量名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.