gpt4 book ai didi

objective-c - 关于Objective-C中的 getter 和 setter

转载 作者:行者123 更新时间:2023-12-01 19:23:25 25 4
gpt4 key购买 nike

这是我的代码

@interface Class : NSObject
{
NSString *str;
}

@property (nonatomic, copy) NSString *str;
@end

@implementation Class
@synthesize str = _str;

-(void)someMethod
{
self.str = @"This is a string";
}

在这里,我无法确定self.str是直接访问str ivar还是通过synthesize指令“生成”的getter和setter方法访问str ivar?

最佳答案

如果使用self.str = …,它只是[self setStr:…]周围的语法糖。因此,您正在经历setter方法。即使使用self.str获得值,也要通过访问器-这对于了解您是否正在实现延迟加载的属性很有用。

您只能使用_str直接访问iVar,因为您(正确地,以我的观点)已声明它是后备存储的名称。

编辑以添加

您的示例存在问题-您定义了未使用的iVar str(iOS使用了现代运行时,无需为合成的属性声明iVars)。因此,尽管您的代码正在写入后备存储库_str,并且如果要直接访问self.str变量,那就是通过str使用的存储库,但您将使用声明的iVar,而不是您拥有属性的iVar。

关于objective-c - 关于Objective-C中的 getter 和 setter ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9119170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com