具有自定义getter的readonly属性是否会合成一个实例变量?

bda*_*iel 14 properties objective-c

我有一种情况,我不希望为一组属性合成实例变量(我通过用户默认值和钥匙串管理它们).

如果我有以下内容,_loginUsername肯定会合成:

@property (nonatomic, readonly) NSString *loginUsername;
Run Code Online (Sandbox Code Playgroud)

而且我知道如果我有以下内容,则不会合成实例变量,因为声明是"我将自己照顾它":

@property (nonatomic, getter = loginUsername, setter = setLoginUsername) NSString *loginUsername;
Run Code Online (Sandbox Code Playgroud)

对于具有自定义getter的readonly属性,行为是否相同?:

@property (nonatomic, readonly, getter = loginUsername) NSString *loginUsername;
Run Code Online (Sandbox Code Playgroud)

_loginUsername最终的财产申报会有合成吗?我很确定不会,但我正在努力更好地掌握属性属性,所以要确保我不会离开.

用于解释在编译时是否已知这一点的加分点(没有作弊和Xcode中的检查!).

@synthesize我的实现文件中没有任何语句.

M. *_*ani 25

注意:编译器将在所有情况下自动合成实例变量,在该情况下,它还合成至少一个访问器方法.如果为readwrite属性实现getter和setter,或者为readonly属性实现getter,编译器将假定您正在控制属性实现,并且不会自动合成实例变量.如果您仍然需要一个实例变量,则需要请求合成一个变量

使用Objective-c编程 - 封装数据 - 您可以实现自定义访问器方法