Iphone 关于内存管理(Interface builder创建对象的规范)
我有一个关于对象c中的空闲对象内存的问题 例如,代码:Iphone 关于内存管理(Interface builder创建对象的规范),iphone,objective-c,Iphone,Objective C,我有一个关于对象c中的空闲对象内存的问题 例如,代码: @interface myCell : UITableViewCell { IBOutlet UIView* bindView; IBOutlet UIView* unBindView; } 如您所见,有两个对象,第一个是通过Interface Builder分配和绑定的,另一个是no 在我的dealloc代码中,我尝试释放它以避免内存泄漏。因此,我的做法如下: - (void)dealloc { [bi
@interface myCell : UITableViewCell {
IBOutlet UIView* bindView;
IBOutlet UIView* unBindView;
}
如您所见,有两个对象,第一个是通过Interface Builder分配和绑定的,另一个是no
在我的dealloc代码中,我尝试释放它以避免内存泄漏。因此,我的做法如下:
- (void)dealloc {
[bindView release];
bindView = nil;
[unBindView release];
unBindView = nil;
[super dealloc];
}
所以,我想这一切都是免费的。。。。。代码执行正确,但我很奇怪,因为第二个对象unBindView
从未在代码中或通过IB赋值,它似乎应该为零,但代码仍然可以执行,没有引发零指针异常
我的问题是,我上面的自由目标代码是否是正确的和最好的方法?因为bindView
从未被保留,我认为这应该由cocoa来处理?下一个问题是关于unBindView
,因为我知道object是弱语言,但是关于这个类型变量的用法规则是什么
谢谢你的回答
因为第二个对象unBindView
从未在代码中或通过IB赋值,所以看起来应该是nil,但代码仍然可以执行,不会引发nil指针异常
在Objective-C中,向nil
发送消息只会导致什么都没有发生。这就是为什么你没有例外。一方面它真的很方便;另一方面,这可能很难找到,而且并非所有情况下都是如此
我的问题是,我上面的自由目标代码是否是正确的和最好的方法
我觉得很好。=nil
行是不必要的,因为视图控制器在调用时已经被释放,但我不认为它会对应用程序的代码产生负面影响