Swift tap recognizer on UITableViewCell



我有一个表视图,可以从社交网络API获取它的数据。 该单元格有 2 个标签和一个图像视图,它有一个自定义类

import UIKit
class resultsCellController: UITableViewCell {
@IBOutlet weak var resultImageView: UIImageView!
@IBOutlet weak var resultName: UILabel!
@IBOutlet weak var resultBioOrUsername: UILabel!
 }

当然还有其他功能,但它们并不重要。我想做的是:

  1. 应用从 api 获取数据并加载表
  2. 当用户点击特定单元格时,我希望将其中一个标签的文本保存到服务器。


func tableView(tableView: UITableView, didDeselectRowAtIndexPath indexPath: NSIndexPath) { //Code }但它似乎不起作用,因为它无法访问单元格本身,因为我必须将其放在 tableView 所在的类中,而不是单元格类中。

到目前为止

,最好的选择是在需要整数时坚持使用Int,当需要布尔值时,请使用Bool。 不要开始对速度或内存使用情况进行事后猜测。 你应该担心数据类型大小的时候是当你存储大量数据的时候,即使这样,也只有在你写了一些东西并能够测试它以验证它是一个问题之后才查看它。

弄乱大小以优化 CPU 使用率很可能会适得其反。 在 64 位 CPU 上,您会发现使用 32 位整数会使性能变差,而不是更好。 或者也许不是。 但如果它更快,它将是一个微优化。 你还会发现自己更多地与类型系统作斗争——许多标准的 Swift 函数需要Int秒——你会到处投射,把你的非标准尺寸类型楔入其中。

如果你想让你的代码更快,关注两件事。

首先,确保您的算法在复杂性方面是有效的(例如,当它们可以提前计算值时,它们不会在循环中不必要地重新计算值)。 如果您在 O(n) 循环中意外调用 O(n) 计算,您的Int32不会拯救您。

其次,为编译器提供尽可能多的优化空间。 在处理简单数据类型时使用值类型(即结构)。 支持静态多态性(如重载和泛型)而不是动态。 使用类型是为了它们的含义,而不是你认为可能更快的东西。

Bool实际上小于Int32(1 字节对 4 字节)。 但这不是你应该使用它的原因——你应该使用它,因为它表明了意图。 向编译器发出信号,并向您发出信号。 您不会意外地将Bool误解为数字。 一个缓慢的程序可能是坏的,但一个行为不正确或崩溃的程序要糟糕得多。

Bool 变量的大小为 1 个字节。

Int 变量的大小为 4 个字节。如果您有数千个变量,则可以使用 Bool 节省一些内存(通过使用位甚至节省更多内存)。可能两种类型在处理器上显示相同的性能。

我建议您使用更适合您的任务的类型。如果你需要简单的标志,Bool 很好,不需要使用 Int。

最新更新