gpt4 book ai didi

ios - 如何从委托(delegate)在线程内构建我的单元格?

转载 作者:行者123 更新时间:2023-11-29 03:51:22 26 4
gpt4 key购买 nike

我有这个 tableView,我想以自定义方式构建单元格。我的方法是向单元格添加 subview 。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *cellIdentifier = @"cell";

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if(cell == nil)
{
cell=[[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease];
}
else
{
UIImageView* img=[UIImage imageNamed:@"abc.png"];
[cell addSubview:img];

//processing the final cell takes time!
}
return cell;
}

但是,由于一些不稳定的帧速率影响了表的响应能力,我想将单元格的所有创建传递到一个线程中。所以我想暂时放置某种图像,一旦完成,线程会将 cell 更新为最终的单元格。

这是正常的做法吗?

如果是这样,我如何从线程更新单元格?

我需要将所有变量定义为__block吗?在进入线程之前?

最佳答案

since some jittery frame rate is affecting the responsiveness of the table, I'd like to pass all this creation of the cell into a thread.

绝大多数 UIKit(包括 UITableViewCell)都不是线程安全的。来自苹果的文档:

For the most part, UIKit classes should be used only from an application’s main thread. This is particularly true for classes derived from UIResponder or that involve manipulating your application’s user interface in any way.

...UIKit 中只有少数绘图和图形上下文方法是线程安全的。在辅助线程上创建单元格是一个非常糟糕的主意。你不想这样做。

有很多 Material 可以有效地创建单元格并将其绘制到表格 View 中 - 正如有人在评论中指出的那样,您似乎不是在单元格创建时添加 UIImageView ,但在重复使用时。这意味着您的单元格将不断添加许多 ImageView 。这显然不是一个好主意。

更好的想法是创建一个已包含您需要的 View 的 UITableViewCell 子类,或者在创建时添加它们并通过 View 标记访问它们。

关于ios - 如何从委托(delegate)在线程内构建我的单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17022916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com