繁体   English   中英

NSTableViewDataSource在Objective-C中释放

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM