1
3
初始值设定项(无论是否指定)不应该关心它作为参数接收的对象的所有权。如果它想保留对象,那么无论参数来自何处,它都必须复制或保留对象。指定的初始值设定项
nsstring文本的内存管理是一种特殊情况,因为这些对象从未被释放,只是忽略了
第三个示例有一个漏洞,因为名称参数字符串对象从未被释放。 |
2
0
您应该始终将自动释放的对象(或在之后释放)发送给初始化程序-此实例中的内存管理规则不会更改。 在你的例子中,我会这样做:
这将修复内存泄漏并允许就地构造。
但是,在传递初始值设定项时不需要额外的保留-使用的是
然而, 方便 方法 不要 包含词init、copy或new应返回一个自动释放的对象。举个例子:
fwiw,我通常将-in i t作为我指定的初始值设定项,因此如果我忘记了并将-in i t发送给一个对象(或者其他人也这样做),就不会得到垃圾对象。例如:
这可能会稍微降低效率(当您使用-initwithname:,setname被调用两次),但这样更安全。 |
Martin sku · 在目标C中打印时间 2 年前 |
Vinod prajapat · 如何更新数组的最后一个元素? 2 年前 |
subin272 · 修复iOS中的多个按钮单击事件? 6 年前 |
James Chan · 如何使用锁定/解锁? 6 年前 |
Josh F. · NSBundle mainBundle返回零 6 年前 |