【发布时间】:2016-10-14 14:08:08
【问题描述】:
Swift 3/iOS 10 在UIImage、imageLiteralResourceName 上添加了一个新的初始化器:
extension UIImage {
required public convenience init(imageLiteralResourceName name: String)
}
这与public init?(named name: String) 有何不同?我 named 是一个失败的初始化程序,而 imageLiteralResourceName 将在无效的图像名称上崩溃。 imageLiteralResourceName 是否以安全换取业绩?什么时候应该使用imageLiteralResourceName 而不是named?
【问题讨论】:
-
this subject上的苹果文档似乎不完整
-
我还没有下载 Xcode 8,但我猜
imageLiteralResourceName只是新图像文字的语法糖(你永远不会显式调用它)。 -
@Fonix 看起来没什么区别,见
UIKit.swift -
@MartinR 在开源版本的 Swift 中找到了实现,看起来没有区别。如果是为了新的图像文字,苹果为什么不保密呢?
-
所有
XxxLiteralConvertible协议和对应的init(xxxLiteral ...)方法都是公开的,但我从未看到明确使用它们的理由。
标签: ios swift uiimage swift3 ios10