有人可以在Objective-C上解释这一行代码吗?

时间:2011-01-08 00:15:40

标签: objective-c memory-management

eventPoints = [[NSMutableArray array] retain];

“retain”关键字和“数组”一起做什么? “数组”没有在任何地方定义。

此外,eventPoints被声明为NSMutableArray。

我只是想学习。感谢

2 个答案:

答案 0 :(得分:6)

查看我问过的这个问题:iPhone memory management (with specific examples/questions)

我花了一段时间来解决这个问题。希望这有帮助!

编辑:至于[NSMutableArray array]的作用,根据NSArray上的文档,它会这样做:“创建并返回一个空数组。”并由NSArray的可变子类使用,例如NSMutableArray。基本上,它与执行相同:[[[NSMutableArray alloc] init] autorelease](或类似的东西)。因为它是autorelease d,您需要在其上调用retain来保留变量。

答案 1 :(得分:2)

1)“retain”关键字与“数组”一起做什么?

如您所知,objective-C使用引用计数进行内存管理。每个点“保留”增量1。

2)“数组”未在任何地方定义。

“array”在NSArray中定义。 NSMutableArray是NSArray的子​​类,因此NSMutableArray可以使用NSArray中定义的函数。 “array”是一个创建并返回空数组的类方法。

有四种方法可以在objective-c中显式增加1:alloc,copy,retain,obtain 因为您创建一个空数组而不使用任何这些数组,所以您可以通过“retain”手动递增1。因此,在将来,您可能需要[everyPoints release]减少1来解除分配。