【问题标题】:Can someone please explain this one line of code on Objective-C?有人可以解释一下Objective-C上的这一行代码吗?
【发布时间】:2011-01-08 00:15:39
【问题描述】:
eventPoints = [[NSMutableArray array] retain];

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

eventPoints 也被声明为 NSMutableArray。

我只是想学习。谢谢

【问题讨论】:

    标签: objective-c memory-management


    【解决方案1】:

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

    我也花了一段时间才掌握了这个窍门。希望这会有所帮助!

    编辑:至于[NSMutableArray array] 的作用,根据NSArray 上的文档,它这样做:“创建并返回一个空数组。”并且被NSArray 的可变子类使用,例如NSMutableArray。基本上,它和做的一样:[[[NSMutableArray alloc] init] autorelease](或类似的东西)。因为是autoreleased,所以需要在上面调用retain来保留变量。

    【讨论】:

    • 感谢您的详细解答
    【解决方案2】:

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

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

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

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

    在objective-c中有四种显式加1的方法:alloc、copy、retain、actain 因为您创建了一个空数组而不使用任何这些,所以您通过“保留”手动增加 1。所以在未来,你可能需要 [everyPoints release] 减 1 来释放它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-06
      • 1970-01-01
      • 2011-05-06
      • 2021-10-15
      • 2011-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多