何时在Swift中使用常量

时间:2014-06-20 13:51:06

标签: ios swift

我正在使用this Swift教程,并惊讶地看到在let cell方法中使用tableView:cellForRowAtIndexPath(见下文)。教程作者提供的解释是

Use let instead of var whenever you know the value won't change

但是,对于每个不同的单元格,下面的代码中cell的值是否会发生变化,特别是如果旧的单元格没有出列,那么变量是否更合适呢?

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {  
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell

    let object = objects[indexPath.row] as Alarm
    cell.textLabel.text = object.title
    return cell
}

您能否澄清为什么常量适合该代码以及value cell的{​​{1}}没有变化。

1 个答案:

答案 0 :(得分:2)

cell会发生什么变化,但是,您必须查看范围。对于该方法的每次迭代,都会重新定义cell常量。也就是说,创建,返回一个新的常量,并且本地常量的范围就会离开,所以当下一次调用该方法并再次定义cell时,它就是一个新的常量我们正在处理。

经验法则是始终使用let,除非你绝对不能。这有助于防止您意外修改您不想修改的变种。

如果要在方法之外定义单元格,然后使用:

cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell

然后肯定会出现问题,因为你正在重新定义一个常量。