eventPoints = [[NSMutableArray array] retain];
“retain”关键字和“数组”一起做什么? “数组”没有在任何地方定义。
此外,eventPoints被声明为NSMutableArray。
我只是想学习。感谢
答案 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来解除分配。