UITableViewCell AutoRelease导致崩溃...?
不知道是否有人知道是否存在实际限制的UITableViewCells的数量不断被重新利用......? 首先,我很清楚所有的Obj-C / Apple内存管理规则(我会先说明这一点,所以我不会浪费任何人的时间,也不会浪费我的)
所以我会直接问这个问题......是否有一些关于重用UITableViewCell的“Autorelease”机制的实际限制? 因为我似乎只是经历了一定数量的崩溃,所以通常超过50页的单元格(大约50页+ 50单元格)被翻上......然后出于否定 - 我会在这里崩溃..有时从不发生在所有,有时发生相当频繁,取决于内容密度...
我自己开始手动保留和释放会更好吗? 如果是这样,有人会有经验推荐一个好地方释放他们..?
[tableview tableView:cellForRowAtIndexPath:]: message sent to deallocated instance 0x14e0a920
好的....我没有找到与实际的UITableViewCell(单元格内容或单元本身)有关的任何事情,但在向Controller(实例化UITableView对象)添加了一些保留之后,“崩溃”神奇地停止了显示...
这是我改变的。 基本上,我添加了三个Retain语句,顺便说一下,我使用了自定义的“Iphone专家”中的“How To” - “UITabBarController”的原始示例教程,但是“专家”否定了保留.... (这只是代码的适用部分...)
//initialize the UITabBarController
tabBarController = [[UITabBarController alloc] init];
TabBarControllerSet = TRUE;
//Create the first UITabBarItem
MainMessageBoard *mainMessageBoard = [[MainMessageBoard alloc] initWithController: self];
[mainMessageBoard setTitle:@"?????"];
[mainMessageBoard retain]; ////******** ADDED This RETAIN ***********
//Create the second UITabBarItem
PostNewComment *postNewComment = [[PostNewComment alloc] initWithController: self];
[postNewComment setTitle:@"????"];
[postNewComment retain]; ////******** ADDED This RETAIN ***********
//Create the third UITabBarItem
logout *Logout = [[logout alloc] initWithController: self];
[Logout setTitle:@"?????"];
[Logout retain]; ////******** ADDED This RETAIN ***********
//add the UIViewControllers to the UITabController
tabBarController.viewControllers = [NSArray arrayWithObjects:mainMessageBoard, postNewComment, Logout, nil];
[tabBarController setDelegate:self];
//release
[mainMessageBoard release];
[postNewComment release];
[Logout release];
[self.view addSubview:tabBarController.view];
AFAIK它仅受设备上的免费内存限制 - 我假设它在autorelease池中和表视图的可重用单元格(即NSSet或更低级别的等效项)中使用某种动态设置。
我已经使用了成千上万行的表格视图,没有任何问题。
链接地址: http://www.djcxy.com/p/30585.html上一篇: UITableViewCell AutoRelease causing crash...?
下一篇: Cleaning up hanging NSURLConnections when a controller is dealloc'ed