代码之家  ›  专栏  ›  技术社区  ›  boreas

从参数创建的释放数组

  •  0
  • boreas  · 技术社区  · 14 年前

    如何释放从参数创建的数组?

    我的功能就像

    -(NSMutableArray*)composePhrase:(NSString*) phraseLiteral{
       ...
       NSArray* wordLiterals=[phraseLiteral componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"[]"]];
       ...
       [wordLiterals release];
    }
    

    我一直对这个版本有问题。有人能告诉我怎么做吗?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Yuji    14 年前

    你需要理解 Object Ownership Policy .

    只有当方法名包含 alloc , new copy . 在这里, componentsSperatedByCharactersInSet: 没有。因此,返回的 wordLiterals 不是你的。它是自动释放的。你不应该 release 它。当当前事件循环完成时,自动释放池会自动释放。

    如果你想保留这个物体, retain 它。然后你拥有它。当你不再需要它时,你 释放 它。

        2
  •  0
  •   walkytalky    14 年前

    返回的数组 componentsSeparatedByCharactersInSet:... 是自动释放的。几乎所有像这样创建的对象都是如此——即,不是通过 alloc copy .

    你应该 retain 如果你想控制住它,就自己动手吧。否则,它将在未来某个不确定的时间蒸发掉(或者如果没有蒸发掉,那不是你的责任)。

    打电话 release 在一些你不拥有的东西上,不可避免地会导致悲伤,所以不要这样做。在这种情况下,由于您似乎只在相同的范围内使用它,所以您可以让它自己处理它。