代码之家  ›  专栏  ›  技术社区  ›  Brian Postow

目标C中发布时间的参考

  •  0
  • Brian Postow  · 技术社区  · 14 年前

    我在目标C中遇到了一个反复出现的问题。我要么释放了太多的时间,要么是不够。或者我没有足够的保留它们…

    当我需要保留和释放时,有人能给我一个很好的参考点吗?

    例如:

    我记得在某个地方读到过一些对象是预先保留的,所以我需要释放它们,但不能保留它们。这些是什么东西?

    如果我分配了一个对象,并且只在该方法中需要它,我需要释放它吗?保留它吗?

    显然,如果我保留了一些东西,我就需要释放它,但除此之外,我会有点迷路。

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

    规则一般都很简单。如果通过以下方法之一获得对象:

    id obj = [[MyObject alloc] init];
    id obj = [myObject retain];
    id obj = [myObject copy];
    id obj = [myObject mutableCopy];
    

    然后您需要在某个时候释放它——使用相同的方法,或者 dealloc 方法,一般。换句话说,平衡你的呼叫 alloc , retain , copy mutableCopy 搭配 release 打电话。

    我记得在某个地方读到过一些对象是预先保留的,所以我需要释放它们,但不能保留它们。这些是什么东西?

    这种情况很少发生。被调用方法的文档应该指定您负责释放返回的对象;否则,您应该假设您正在接收一个自动释放的对象。

    如果我分配了一个对象,并且只在该方法中需要它,我需要释放它吗?保留它吗?

    是的,你需要释放它(但你不需要保留它)。(如果只在该方法中使用自动释放对象,也可以使用返回该对象的便利方法之一。)

        2
  •  2
  •   Barry Wark    14 年前

    只有一个标准参考:苹果的 Memory Management Guide 对于可可或iPhone。