至于这个帖子: iPhone - dealloc - Release vs. niliOS内存管理跟进。 dealloc vs nil?
1) [foo release];
2) self.bar = nil;
的解释如下:
正在释放的对象,通过实例变量酒吧访问它。实例变量将成为悬挂指针。这是dealloc中的首选方法。
是一个分配零到自我的属性栏,将在实践中发布的任何财产,目前保留。如果你有一个属性的自定义setter,那么应该这样做,它应该清除不仅仅是支持属性的实例变量。
有人请澄清#1的解释吗?通过实例变量访问?
例如,我在我的对象头设置一个私人VAR像这样:
SomeObject *oPointer;
我不使用这个指针在头文件属性setter和它不得到合成时,实例化目的。
在我的代码中,在给定的条件下,我稍后必须分配这个指针给它的对象。
obj = [[SomeObject alloc] initWith....];
所以这通过实例变量OBJ现在访问。我有一个UIButton被配置为重置这个对象,它附加的方法释放它。我通过这样做:
[obj release];
obj = nil;
毕竟是解释的问题是,为什么我还有宣布与obj =零? [obj发布]调用似乎也杀死了指针。我在想,[OBJ发行]会取消分配它指向的内存,并且还设置OBJ为零所有在一杆,但现在看来,这也杀死指针,因为我的应用程序崩溃时,它试图引用OBJ后[obj release];
这个问题有意义吗?是简单的解释[obj发布]确实全部清理,包括杀死指针,我需要知道这一点?
如果我为SomeObject指针设置retain属性,指针在发布后仍然保留?
提前致谢!