首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >initWithNibName需要发布吗?

initWithNibName需要发布吗?
EN

Stack Overflow用户
提问于 2011-07-30 10:37:14
回答 3查看 431关注 0票数 2

我使用initWithNibName加载细节视图。我只是在想,这些东西真的需要发布吗?init基本上是在添加一个保留计数1?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-30 12:19:23

@Mel:

是的,你需要释放它们。

来自苹果公司的豆瓣化:

创建的任何对象都是你自己的

使用名称以“alloc”、“”、“copy”或“mutableCopy”开头的方法创建对象(例如,alloc、newObject或mutableCopy)。

但就其本身而言,它与initWithNibName无关,而是与分配内存的四个单词有关,这四个单词分别是“mutableCopy”、“copy”、“retain”和“alloc”。所以希望你现在明白了。

init关键字只是初始化一个对象。内存分配是通过allocretaincopymutableCopy关键字完成的

您所说的保留计数为1是因为alloc关键字,而不是initWithNibName

希望这对你有帮助。

票数 5
EN

Stack Overflow用户

发布于 2011-07-30 10:39:47

是。阅读this section。任何以init...开头的东西都会给你一个你拥有的对象。

票数 5
EN

Stack Overflow用户

发布于 2011-07-30 10:50:23

有问题的部分:

您拥有您创建的任何对象,您可以使用名称以“alloc”、“”、“mutableCopy”或“mutableCopy”开头的方法创建对象(例如,alloc、newObject或mutableCopy)。

您可以使用retain获取对象的所有权。接收到的对象通常保证在接收到它的方法中保持有效,该方法也可以安全地将对象返回给它的调用者。..。

当您不再需要某个对象时,必须放弃该对象的所有权通过向对象发送释放消息或自动释放消息来放弃该对象的所有权。因此,在Cocoa术语中,放弃对象的所有权通常被称为“释放”对象。

您不能放弃您不拥有的对象的所有权这只是前面明确声明的策略规则的必然结果。

不过,通常情况下,您应该避免考虑保留计数,而应专注于所有权。如果你拥有它,就由你来释放它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6880746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档