代码之家  ›  专栏  ›  技术社区  ›  David.Chu.ca

stringbytrimmingcharactersinset:autoreleased字符串吗?

  •  1
  • David.Chu.ca  · 技术社区  · 16 年前

    我可以使用以下代码修剪字符串:

    -(void) aMethod {
    // myStr from a text box
    NSString *trimedStr = [mystr stringByTrimmingCharactersInSet:
      [NSCharacterSet whitespaceAndNewlineCharacterSet]];
    ...
    // should I release trimedStr?
    }
    

    不确定结果trimedstr是否为自动释放字符串?我怎么知道?

    2 回复  |  直到 16 年前
        1
  •  4
  •   Brandon Bodnar    16 年前

    这个 fundamental rule of memory management in Objective-C

    如果你 使用名为 以“alloc”或“new”开头 包含副本(例如,alloc, newobject或mutablecopy),或者 给它发一条保留信息。你是 负责放弃 使用您拥有的对象的所有权 释放或自动释放。 其他时间 你收到一个物品,你不能 释放它。

    由于名称不以alloc或new开头且不包含copy,因此它是自动删除的。

        2
  •  0
  •   David Gelhar    16 年前

    是的,它是自动释放的。

    跑,不要走,到 Object Ownership Policy 内存管理编程指南的一节,以了解如何辨别。

    (简而言之,因为方法名不是以“alloc”或“new”开头,或者包含“copy”一词,所以您不拥有它,也不需要释放它。)