9
|
Sixto Saez · 技术社区 · 16 年前 |
![]() |
1
27
什么?不。 规则很简单:
或者,消化一点:
错误的执行
The Memory Management Programming Guide for Cocoa explains everything. 每个Cocoa或Cocoa Touch程序员都应该不时地阅读或重新阅读它。 |
![]() |
2
6
事实上,两个二传手都错了。“不正确”一词是错误的,因为一般的内存管理原因(在其他地方有很好的阐述)。“推荐”的错误有两个原因:
“正确”(imho)方法是:
对于大多数对象,您实际上希望在第三行保留而不是复制,但对于字符串,复制几乎总是更好的。 |
![]() |
3
3
initWithString和stringWithString的区别在于,stringWithString返回一个自动释放的指针。这意味着您不需要特定地释放它,因为下次自动释放池清除任何自动释放的指针时都会注意到这一点。 另一方面,initwithstring返回一个保留计数为1的指针-您需要调用该指针上的release,否则它将导致内存泄漏。 见 https://stackoverflow.com/questions/193288/what-is-the-cost-of-using-autorelease-in-cocoa 因为一些原因,比如为什么你应该使用自动释放和释放。 |
![]() |
4
0
在上面不正确的代码中,下次调用setname之后引用name时,会出现异常错误,因为对象将被释放。您可以使用“正确”代码,也可以使用显式retain调用包装StringWithString调用:
|
![]() |
5
0
使用创建的字符串
用
如果您不打算保留任何指向
|
![]() |
Martin sku · 在目标C中打印时间 3 年前 |
![]() |
Vinod prajapat · 如何更新数组的最后一个元素? 3 年前 |
![]() |
subin272 · 修复iOS中的多个按钮单击事件? 7 年前 |
![]() |
James Chan · 如何使用锁定/解锁? 7 年前 |
![]() |
Josh F. · NSBundle mainBundle返回零 7 年前 |