gpt4 book ai didi

objective-c - 在存在ARC的情况下初始化iVar变量的正确方法是什么

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

示例iVar foo

@property (nonatomic) NSString* foo; // inside .h

选项1
@Synthesize foo; //Inside .m 

foo = [[NSString alloc] init]; // viewDidLoad method

选项2
@Synthesize foo; //Inside .m 

self.foo = [[NSString alloc] init]; // viewDidLoad method

选项3
@Synthesize foo = _foo; //Inside .m 

_foo = [[NSString alloc] init]; // viewDidLoad method

为什么?

在这么多地方,我都看到了用不同的方法在Obj-C中初始化对象的代码,但是哪一种是最佳实践?

最佳答案

在这方面,ARC与MRC相同。

您已指定所有这些都在viewDidLoad中进行。在这种情况下,请使用二传手(选项2)。

如果要在初始化程序中进行初始化/设置,则应使用直接访问。根本原因是在初始化程序(例如-init)中,您有一个部分初始化的对象。在初始化期间,您要集中精力初始化类需要或期望的变量,以使其正常运行。同样,要避免在部分构造状态下使用访问器时遇到的side-effects

在完全构建的状态下(例如viewDidLoad),您应该将实现委派给访问器,以实现对象界面指定的正确行为。

补充阅读:

Initializing a property, dot notation

Should I refer to self.property in the init method with ARC?

Why would you use an ivar?

关于objective-c - 在存在ARC的情况下初始化iVar变量的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12035149/

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