gpt4 book ai didi

iphone - 建议初始化数组(或其他对象)的最佳方法

转载 作者:行者123 更新时间:2023-12-03 20:26:57 28 4
gpt4 key购买 nike

我对以下两种初始化方式有点困惑......

方式一:

- (void) myMethod{

NSArray *myArray = [[NSArray alloc] initWithObjects:obj1,obj1,nil];
[self setClassArray:myArray];
[myArray release];
}

方式2:

- (void) myMethod{

NSArray *myArray = [NSArray arrayWithObjects:obj1,obj2,nil];
[self setClassArray:myArray];
}

在方法 1 中,我使用了 alloc init 方法,它是一个实例方法,并且由于我使用了 alloc 语句,所以我必须自己释放数组。

在方法 2 中,我使用了静态方法来初始化数组,并且由于没有使用 alloc 语句,因此我不需要释放内存,系统会处理该问题。

方法 1 非常耗时,如果不小心可能会导致内存泄漏

方式2,编写速度更快,并且不需要处理内存泄漏

但是,我仍然看到在标准源代码中使用的 way1 比 way2 更频繁。我不知道为什么人们这样做或者我是否在某些地方错了。

公开邀请回答和评论。请建议最佳编程实践。

最佳答案

您的第二个示例使用便利构造函数,它返回一个自动释放的对象。那么问题是使用 autorelease 还是 alloc/release 更好。 mmalcanswer on this StackOverflow thread解释自动释放对象的缺点。 (基本上,尽可能使用alloc/release。)

此外(这可能是显而易见的),某些类可能没有方便的构造函数,因此在使用这些类时,您必须使用 alloc/release

关于iphone - 建议初始化数组(或其他对象)的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1740286/

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