Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 关于内存管理(Interface builder创建对象的规范)_Iphone_Objective C - Fatal编程技术网

Iphone 关于内存管理(Interface builder创建对象的规范)

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

我有一个关于对象c中的空闲对象内存的问题

例如,代码:

@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
行是不必要的,因为视图控制器在调用时已经被释放,但我不认为它会对应用程序的代码产生负面影响