performBlock
會異步執行在context的thread之中(不會阻塞當前的thread)
performBlockAndWait
會同步執行在context的thread之中(會阻塞當前的thread,直到執行完block中的code再返回)
array是immutable类型的NSArraycopy只是retain,没有创建新对象arrayWithArray 创建了新的NSArray对象,并将原有数组元素填充进去,数组元素还是原来的对象array是mutable类型的NSArrayNSArray对象,但数据元素还是原来的对象array == nilcopy的结果是nilarrayWithArray 结果是长度为0的NSArray对象let iconImage = UIImage(named: "icon.png")!
var icon = NSTextAttachment()
icon.bounds = CGRect(x: 0, y: (titleFont.capHeight - iconImage.size.height).rounded() / 2, width: iconImage.size.width, height: iconImage.size.height)
icon.image = iconImage
let iconString = NSAttributedString(attachment: icon)
titleText.append(iconString)