相关疑难解决方法(0)

在"reloadData()"之后,Table View需要花费大量时间进行刷新

这就是我想要做的事情:从苹果公司的RSS获取一个xml,其中包含有关应用程序的信息,解析它,并在UITable视图中显示应用程序.

问题是在"reloadData()"之后,显示信息大约需要5秒钟.此外,应用程序总是在打开项目后第一次运行时崩溃.

这是项目:http: //www.mediafire.com/?2dn6g916bh9uf4v

iphone rss xcode uitableview

5
推荐指数
1
解决办法
4473
查看次数

UITableView reloadData占用了太多时间

我正在使用TBXML + HTTP从网站获取XML数据.我想要做的是用处理过的数据填充UITableView.我已经创建了一个包含所有条目的NSMutableArray,并且就此而言,一切正常.问题是,在成功从服务器获取数据并将其存储在数组中之后,我尝试使用更新表来显示数据reloadData.

用20行填充表大约需要5秒钟.奇怪的是,提取发生得非常快,因此数据可以立即获得.我不明白花了这么长时间.以下是日志中的一些信息:

2012-03-17 18:46:01.045 MakeMyApp[4571:207] numberOfSectionsInTableView: 1
2012-03-17 18:46:01.047 MakeMyApp[4571:207] numberOfRowsInSection: 0
2012-03-17 18:46:01.244 MakeMyApp[4571:1f03] numberOfSectionsInTableView: 1
2012-03-17 18:46:01.245 MakeMyApp[4571:1f03] numberOfRowsInSection: 20
2012-03-17 18:46:01.245 MakeMyApp[4571:1f03] Ok, I'm done. 20 objects in the array.
2012-03-17 18:46:01.246 MakeMyApp[4571:1f03] Finished XML processing.
2012-03-17 18:46:06.197 MakeMyApp[4571:1f03] cellForRowAtIndexPath:
Run Code Online (Sandbox Code Playgroud)

正如你所看到的那样,它会触发两次numberOfSectionsInTableView:/ numberOfRowsInSection:两次:第一次是视图加载时,第二种是当我加载时[self.tableView reloadData];

您可以看到,在不到一秒的时间内,数组将填充20个对象,并完成处理XML的所有工作.怎么在cellForRowAtIndexPath:5秒后被解雇?

以下是可能有助于发现问题的代码的一些部分:

- (void)createRequestFromXMLElement:(TBXMLElement *)element {
    // Let's extract all the information of the request
    int requestId = [[TBXML valueOfAttributeNamed:@"i" forElement:element] intValue];

    TBXMLElement *descriptionElement …
Run Code Online (Sandbox Code Playgroud)

sdk uitableview reloaddata ios tbxml

2
推荐指数
2
解决办法
4152
查看次数

标签 统计

uitableview ×2

ios ×1

iphone ×1

reloaddata ×1

rss ×1

sdk ×1

tbxml ×1

xcode ×1