iphone – 我们为什么要发布?

iphone – 我们为什么要发布?,第1张

概述我经常看到当我们释放ab对象时,我们立即将其设置为nil.我知道release和nil都释放了与object相关的旧值,但是在释放时它将对象留作悬空指针,所以我们必须将它设置为nil. 所以我的问题是,如果nil释放对象的旧值并将对象设置为nil为什么我们不应该只使用nil为什么w也应该使用release. WAY1: MyClass *obj = [[MyClass alloc] init]; 我经常看到当我们释放ab对象时,我们立即将其设置为nil.我知道release和nil都释放了与object相关的旧值,但是在释放时它将对象留作悬空指针,所以我们必须将它设置为nil.

所以我的问题是,如果nil释放对象的旧值并将对象设置为nil为什么我们不应该只使用nil为什么w也应该使用release.

WAY1:

MyClass *obj = [[MyClass alloc] init];[obj release];obj = nil;

Way2:

MyClass *obj = [[MyClass alloc] init];obj = nil;

如果使用way1为什么不使用way2,那么way1和way2的真正区别是什么?

解决方法 将指针设置为nil不会释放该指针的前一个目标所占用的内存.用简单的英语,将它指定为nil不会释放它.

如果您的应用程序是垃圾收集的,那么发布是无 *** 作的,可以省略.否则,这是非常非常必要的.因此,方式1始终是正确的,并且方式2仅在垃圾收集下是正确的.

注意:此答案不适用于使用自动引用计数的项目.在ARC下,将指针设置为nil会向对象发送一个释放.

总结

以上是内存溢出为你收集整理的iphone – 我们为什么要发布?全部内容,希望文章能够帮你解决iphone – 我们为什么要发布?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1057033.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存