Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 性能问题alloc vs copy_Iphone_Objective C - Fatal编程技术网

Iphone 性能问题alloc vs copy

Iphone 性能问题alloc vs copy,iphone,objective-c,Iphone,Objective C,我有一个带有自定义单元格的表视图。每个单元格都有图像和文本,它们正在侦听通知。有人知道在内存中分配一个单元格作为模板,然后从中复制基本布局是否更好,而不是每次需要创建单元格时分配一个新实例?我必须测试一下,但我很懒:)谢谢。在创建单元格之前,您应该在UITableView上调用dequeueReusableCellWithIdentifier:,并检查它是否为nil。如果是,请使用initWithStyle:reuseIdentifier:创建新单元格。假设所有单元都具有相同的布局,请确保所有单

我有一个带有自定义单元格的表视图。每个单元格都有图像和文本,它们正在侦听通知。有人知道在内存中分配一个单元格作为模板,然后从中复制基本布局是否更好,而不是每次需要创建单元格时分配一个新实例?我必须测试一下,但我很懒:)谢谢。

在创建单元格之前,您应该在
UITableView
上调用
dequeueReusableCellWithIdentifier:
,并检查它是否为
nil
。如果是,请使用
initWithStyle:reuseIdentifier:
创建新单元格。假设所有单元都具有相同的布局,请确保所有单元的重用标识符都相同。这是苹果公司处理你所描述的这个问题的标准方法


查看并了解更多详细信息。

UITableViewCell
未实现
NSCopying
协议,因此您必须自己在自定义子类中实现该协议。因此,如果您打算编写自己的
-copyWithZone:
实现,那么问题是该代码如何比您当前正在做的任何事情更高效

谢谢你的回答,但我的问题是关于细胞的创建。我已经在呈现表视图之前创建了单元格,所以我只返回与数组上的索引匹配的元素。是的,我想我必须测试并比较两个版本。我需要改进我的实现的性能,这涉及到几件事要做。我只是在重新设计它时考虑过这个问题,我决定在尝试之前先问一下。我将带着我的结论回来。我已经尝试了mutableCopyWithZone,但它需要分配新对象。没有比我现在更好的了。至少在我的情况下,我没有优势复制而不是分配。通过只创建可见的单元格,然后在视图可见后创建其他单元格,我获得了更好的结果。
-mutableCopyWithZone:
将是错误的API,但正如我所说的,我不认为这在任何情况下都会提高性能。顺便问一下,这是一个普通或分组样式的表视图吗?它是一个用于聊天花名册的普通表。我同意你关于使用复制的表现。我需要一个可变副本,因为单元格中的元素可能会随着时间而变化。我有一个显著的改进,在后台加载单元格,而应用程序正在加载另一个东西。所以,当我创建视图时,我不需要创建那些单元格。谢谢你的回复。