[英]NSTableViewDataSource dealloc in objective-c
我目前正在学习Objective-C,并且目前正在使用NSTableView进行培训。
这是我的问题:
我已经通过Interface Builder将tableview链接到我的控制器,以便它具有数据源,我已经在控制器中实现了NSTableViewDataSource协议,并且已经实现了-(NSInteger) numberOfRowsInTableView:
和-(id) tableView:objectValueForTableColumn:row:
方法。
我创建了一个原始业务类(“人”),并成功地将其内容显示到了NSTableView中。
但是,然后,我在dealloc方法中放置了一些NSLog
来查看是否释放了内存,而且似乎从未释放我的数组以及“ person”实例。
这是我在控制器中的dealloc代码:
-(void)dealloc
{
NSLog(@"the array is about to be deleted. current retain : %d",[personnes retainCount]);
[personnes release];
[super dealloc];
}
在我的“人”课上
-(void) dealloc
{
NSLog(@"%@ is about to be deleted. current retain : %d",[self prenom],[self retainCount]);
[self->nom release];
[self->prenom release];
[super dealloc];
}
应该在应用程序生命周期中何时调用这些dealloc? 因为我希望它们在窗口关闭时被调用,但事实并非如此。
希望自己变得足够清楚,
谢谢 :)
风筝。
我假设您永远不会释放拥有(仅)窗口的窗口控制器对象。 这样,在整个应用程序生命周期(包括窗口(及其视图))中,窗口控制器和nib文件中的每个顶级对象都将保留。
由于窗口控制器存在于整个应用程序生命周期中,因此不会被释放,因此永远不会调用其-dealloc
方法。 而且,由于从不调用controller -dealloc
方法,因此不会释放其personnes
数组。
personnes
数组拥有其元素。 由于未释放数组,因此数组的元素也不释放,因此永远不会调用相应类/实例的-dealloc
方法。
永远 不要 使用 retainCount
。 结果充其量是令人误解的。 如果您练习正确的内存管理做法,就可以了。 您是否有任何内存问题/崩溃?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.