当前位置:  开发笔记 > 编程语言 > 正文

Threadsafe UITableView

如何解决《ThreadsafeUITableView》经验,为你挑选了1个好方法。

我正在使用UITableView来显示数组中的一些数据.其他线程可以随时更改此数组.(我相信无论数组是可变的,还是只是完全替换,都没有区别.)对数组本身的访问是线程安全的.

在tableview方面确保线程安全的正确方法是什么?我担心,例如,我可能会在调用cellForRowAtIndexPath之前将数组更改为更短,从而导致NSRangeException.

我是不是该...

    强制只在主线程上更改数组?(看起来很难看.)

    维护一个阴影数组并通过KVO观察在主线程上更新它?

    ??? 必须有一个更好的解决方案......

Ben Gottlieb.. 6

根据您的描述,您确实有两个不同的数据集:

实际数据,因为它存在于您的模型中

显示给用户的数据

因此,实际上,你已经拥有了一个"阴影"数组(虚拟阴影,它可能会将这个比喻拉得太远).我想说你最好的办法是将这种安排形式化,并保留一个只在主线程中修改的"显示"数组.在其中,您可以拥有来自"真实"数组的对象; 因为它们只是指针,所以你不会放弃太多的记忆.

线程是邪恶的.



1> Ben Gottlieb..:

根据您的描述,您确实有两个不同的数据集:

实际数据,因为它存在于您的模型中

显示给用户的数据

因此,实际上,你已经拥有了一个"阴影"数组(虚拟阴影,它可能会将这个比喻拉得太远).我想说你最好的办法是将这种安排形式化,并保留一个只在主线程中修改的"显示"数组.在其中,您可以拥有来自"真实"数组的对象; 因为它们只是指针,所以你不会放弃太多的记忆.

线程是邪恶的.

推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有