繁体   English   中英

在iOS中使用NSMutableAttributedString作为常量

[英]Using NSMutableAttributedString as a Constant in iOS

我刚开始学习Swift,遇到了一些我不了解的东西。 在一个教程中,作者在常量内创建了NSMutableAttributedString 后来,该常数被更改。 我不明白的是如何做到这一点而不会出现任何错误。 NSMutableAttributedString是否由于缺少更好的术语而覆盖了常量的规则?

@IBAction func buttonPressed(sender: UIButton) {
    let title = sender.titleForState(.Normal)!
    let plainText = "\(title) button pressed"
    let styledText = NSMutableAttributedString(string: plainText)
    let attributes = [NSFontAttributeName: UIFont.boldSystemFontOfSize(statusLabel.font.pointSize)]
    let nameRange = (plainText as NSString).rangeOfString(title)
    styledText.setAttributes(attributes, range: nameRange)

    statusLabel.attributedText = styledText
}

它与NSMutableAttributedString无关,但与styledText存储引用类型有关。 由于已将其定义为常量,因此无法更改其值:

styledText = NSMutableAttributedString(string: "anotherString") // Error

但是您可以更改变量指向的实例。

Swift中的let关键字强制值类型(结构和枚举)的不变性,而不是引用类型的不变性。

Swift中的结构和枚举有两种方法:

  • 变异方法,使用关键字mutating定义
  • 非变异方法(默认行为)

如果将结构或枚举的实例分配给可变存储(使用var定义的var ),则可以通过调用其上的任何可变或非可变方法来随意修改其状态。

如果将其分配给不可变的存储(使用let定义),则只能在其上调用非可变方法。 您也不能使存储存储另一个实例(即,您不能为其分配另一个结构或枚举)。

类是引用类型,没有突变或非突变方法的概念。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM