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

表V的保留计数iew:cellForRowAtIndexPath:

  •  0
  • David M.  · 技术社区  · 14 年前

    在苹果的示例代码中,方法 tableView:cellForRowAtIndexPath: UITableViewDataSource

    编辑:我看到的示例代码确实自动释放了它,我的眼睛不知怎么跳过了它。抱歉浪费你的时间。谢谢你的回复。

    5 回复  |  直到 14 年前
        1
  •  3
  •   Brian    14 年前

    价值 retainCount 其实并不重要(它可能会因为似乎未知的原因而上下波动)。但是细胞是在 tableView:cellForRowAtIndexPath: 应该自动释放。你在看什么样的示例代码?

        2
  •  2
  •   tc.    14 年前

    哪个示例代码?MyTableViewController.m返回 [tableView dequeueReusableCellWithIdentifier:kCellID] [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:kCellID] autorelease] .

    如果示例代码执行了不同的操作,则可能是错误的。几乎所有的方法都遵循Objective-C命名约定;那些没有明确记录的。

        3
  •  0
  •   walkytalky    14 年前

    保留计数为 总是 至少1。如果retain计数小于这个值,你就永远不会得到一个对象,它已经是一个ex对象了。请不要从保留计数中得出结论,或者对它们有期望,甚至永远不要看它们。从来没有。

    可能到处都有做错事的不可靠的示例代码。别理它。做正确的事,不要为其他事烦恼。

        4
  •  0
  •   user387184    14 年前

    事实上,根本不用retainCount。我被搞糊涂了,它把我引向了一个完全错误的方向,我浪费了好几天的时间去寻找错误的漏洞。如果计数上升或下降,那就毫无意义了!别浪费一秒钟去处理它。

    (ps还要感谢walkytalky——我刚刚看到他也回答了这个问题!)

        5
  •  0
  •   Anshu Chimala    14 年前

    别担心计数。你呢 alloc UITableViewCell 在你的 cellForRowAtIndexPath: autorelease 它需要自动释放池稍后释放它。当您返回它时,它还没有被释放,但是稍后会被系统释放(您只是简单地放弃了它的所有权,这是您想要的,因为在它从函数返回后,您不维护对单元格的引用)。