gpt4 book ai didi

objective-c - 重新初始化对象

转载 作者:太空狗 更新时间:2023-10-30 04:02:02 24 4
gpt4 key购买 nike

我有一个带有一堆自定义属性的对象,我在 init 方法中设置了这些属性。在某些时候,我想将对象重置为原始状态。 Apple 的文档中指出,init 永远不应与 alloc 分开调用,因此使用 ARC,在我看来,这对我来说是一种完全合理的方式:

MyObject* myObject = [[MyObject alloc] init]; // inits myStringProperty to @""
myObject.myStringProperty = @"Hello world!";
NSLog(myObject.myStringProperty);

myObject = [[MyObject alloc] init]; // resets myStringProperty back to @""
NSLog(myObject.myStringProperty);

但是,我读过(例如 here ),在这种情况下的常见模式是显式定义 reset 方法并将重新初始化代码重构到那里。显然,这避免了必须创建一个全新的对象(尽管我无法想象这样做的开销如此之高,并且将发布和重新分配留给 ARC 似乎是最简单的方法)但是是否还有其他原因更喜欢一个方法超过另一个?对象重新初始化的通用 Objective C 模式是什么?

最佳答案

如果您创建 reset 方法的主要目的是避免释放和分配新对象的开销,那么在大多数情况下我会说跳过 reset 方法。除非初始化您的对象非常复杂或耗时,否则这是无用的微优化。让您的类(以及使用它的代码)更简单,并在需要新对象时创建一个新对象。

对于重用的 Objective-C 类,我能想到的唯一示例是 UITableViewCell。使这些可重复使用是有充分理由的,因为它可以避免降低滚动性能。

关于objective-c - 重新初始化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21312133/

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