我使用initWithNibName加载细节视图。我只是在想,这些东西真的需要发布吗?init基本上是在添加一个保留计数1?
发布于 2011-07-30 12:19:23
@Mel:
是的,你需要释放它们。
来自苹果公司的豆瓣化:
创建的任何对象都是你自己的
使用名称以“alloc”、“”、“copy”或“mutableCopy”开头的方法创建对象(例如,alloc、newObject或mutableCopy)。
但就其本身而言,它与initWithNibName无关,而是与分配内存的四个单词有关,这四个单词分别是“mutableCopy”、“copy”、“retain”和“alloc”。所以希望你现在明白了。
init关键字只是初始化一个对象。内存分配是通过alloc、retain、copy或mutableCopy关键字完成的
您所说的保留计数为1是因为alloc关键字,而不是initWithNibName。
希望这对你有帮助。
发布于 2011-07-30 10:39:47
是。阅读this section。任何以init...开头的东西都会给你一个你拥有的对象。
发布于 2011-07-30 10:50:23
有问题的部分:
您拥有您创建的任何对象,您可以使用名称以“alloc”、“”、“mutableCopy”或“mutableCopy”开头的方法创建对象(例如,alloc、newObject或mutableCopy)。
您可以使用retain获取对象的所有权。接收到的对象通常保证在接收到它的方法中保持有效,该方法也可以安全地将对象返回给它的调用者。..。
当您不再需要某个对象时,必须放弃该对象的所有权通过向对象发送释放消息或自动释放消息来放弃该对象的所有权。因此,在Cocoa术语中,放弃对象的所有权通常被称为“释放”对象。
您不能放弃您不拥有的对象的所有权这只是前面明确声明的策略规则的必然结果。
不过,通常情况下,您应该避免考虑保留计数,而应专注于所有权。如果你拥有它,就由你来释放它。
https://stackoverflow.com/questions/6880746
复制相似问题