所以我的问题是,如果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 – 我们为什么要发布?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)