【发布时间】:2011-04-12 22:19:23
【问题描述】:
我目前正在学习 Objective-c,目前正在使用 NSTableView 进行培训。
这是我的问题:
我已经通过 Interface Builder 将我的 tableview 链接到我的控制器,以便它有一个数据源,我已经在我的控制器中实现了 NSTableViewDataSource 协议,并且我已经实现了 -(NSInteger) numberOfRowsInTableView: 和 -(id) tableView:objectValueForTableColumn:row: 方法。
我创建了一个原始业务类(“person”),并成功地将其内容显示到我的 NSTableView 中。
但是,我在我的 dealloc 方法中放了一些 NSLog 来查看内存是否被释放,似乎我的数组以及我的“人”实例永远不会被释放。
这是我在控制器中的 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?因为我希望它们会在窗口关闭时被调用,但它没有。
希望大家看得清楚,
谢谢:)
风筝。
【问题讨论】:
-
那些
-dealloc方法永远不会被调用? -
你的应用只有这个视图吗?
-
只是一些关于retainCount的建议。不要依赖它。 stackoverflow.com/questions/2020103/…
-
[self->nom release] 应该是 [nom release]
-
这是我唯一的看法,是的。我的意思是我的 NStableView 只有默认窗口。并且从不调用 dealloc(当我关闭窗口时,应该是正确的情况,)
标签: objective-c cocoa macos nstableview dealloc