gpt4 book ai didi

iphone - 对同一个对象以不同方式调用 retain 如何工作?

转载 作者:行者123 更新时间:2023-11-28 20:40:15 25 4
gpt4 key购买 nike

我想知道以下两者之间的区别:

NSMutableArray *myArray = [[someObject returnMutableArray] retain];

NSMutableArray *myArray = [someObject returnMutableArray];
[myArray retain];

我有一些复杂的数据流项目,我必须在其中返回不同的 NSMutableArray。我还想知道返回 NSMutableArrays 的最佳方式是什么。

最佳答案

除了您希望代码格式化的方式之外没有区别。

之所以有效,是因为在 NSObject 的文档中

As a convenience, retain returns self because it may be used in nested expressions.

因此,retain 返回被调用的对象(在您的情况下是一个可变数组),这意味着您可以嵌套方法,或者像示例中那样简单地在赋值中使用返回值。


对于从方法返回的值,你应该确保它是自动释放

所以使用你的片段

- (NSMutableArray *)myMethod;
{
NSMutableArray *myArray = [someObject returnMutableArray];

// ... do some work

return myArray;
}

因为方法returnMutableArray 不包含关键字的allocnewcopy 它应该被做成返回一个 autorelease 对象。现在,由于我们在方法的末尾返回对象,因此我们不需要进行任何进一步的保留,因为它将准备好返回。

如果您不确定内存管理,您应该阅读 Advanced Memory Management Guide或者(最好)开始使用 ARC

关于iphone - 对同一个对象以不同方式调用 retain 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8859554/

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