gpt4 book ai didi

objective-c - 将保留属性设置为新创建的对象的最佳方法

转载 作者:可可西里 更新时间:2023-11-01 04:11:46 26 4
gpt4 key购买 nike

在保留属性中创建对象的最佳方式是什么?我已经包括了几个例子。

假设属性是:

@property (nonatomic, retain) myProperty;
@synthesize myProperty = _myProperty;

选项 1:

self.myProperty = [[[MyClass alloc] init] autorelease];

选项 2:

self.myProperty = [[MyClass alloc] init];
[self.myProperty release];

选项 3:

_myProperty = [[MyClass alloc] init];

选项 4:

MyClass *property = [[MyClass alloc] init];
self.myProperty = property;
[property release];

最佳答案

如果在初始化包含变量的对象时:

1) 没有。在部分构造的状态(例如 initdealloc)中调用访问器是一种不好的形式

2)没有。在部分构造的状态(例如 initdealloc)中调用访问器是一种不好的形式

3) 正确。

异常:如果您的 ivars 不是私有(private)的并且您正在实现声明该属性的类型的子类,那么您还必须检查是否父类初始化属性。最好将属性设为私有(private),否则子类无法直接访问。

4)没有。在部分构造的状态(例如 initdealloc)中调用访问器是一种不好的形式

当您使用完全构建的实例时:

1) 当可读性比保持较小的堆大小更重要时,这很好。

2) 不好。从 getter 返回的对象不一定是您分配的对象。

3)不好。如果 _myProperty 不是 nil,可能会导致泄漏。

4)最好

关于objective-c - 将保留属性设置为新创建的对象的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7842641/

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