Variable/constant申报差异
Variable/constant declaration difference
哪一个最好,这些声明本身是多余的吗?
let imageView: UIImageView = UIImageView() // [1]
let imageView = UIImageView() // [2]
let imageView: UIImageView! // [3]
let imageView: UIImageView? // [4]
也为您的示例添加了一些评论。
- 两种初始化方式
- 声明可选的两种方法
- 我还添加了延迟初始化选项
Google 选项以获取更多信息。
// more text for more readability
let imageViewA: UIImageView = UIImageView() // [1]
// this is fine
let imageViewB = UIImageView() // [2]
// this is danagerous
let imageViewC: UIImageView! // [3]
// calling this before the next step will crash it
imageViewC.image = UIImage(data: NSData())
// it needs this step
imageViewC = UIImageView()
// this is fine because xcode will warn you when you are not handling it fine
let imageViewD: UIImageView? // [4]
// it does needs this step
imageViewD = UIImageView()
// late init : this is cool stuff
let imageViewE: UIImageView
imageViewE = UIImageView()
哪一个最好,这些声明本身是多余的吗?
let imageView: UIImageView = UIImageView() // [1]
let imageView = UIImageView() // [2]
let imageView: UIImageView! // [3]
let imageView: UIImageView? // [4]
也为您的示例添加了一些评论。
- 两种初始化方式
- 声明可选的两种方法
- 我还添加了延迟初始化选项
Google 选项以获取更多信息。
// more text for more readability
let imageViewA: UIImageView = UIImageView() // [1]
// this is fine
let imageViewB = UIImageView() // [2]
// this is danagerous
let imageViewC: UIImageView! // [3]
// calling this before the next step will crash it
imageViewC.image = UIImage(data: NSData())
// it needs this step
imageViewC = UIImageView()
// this is fine because xcode will warn you when you are not handling it fine
let imageViewD: UIImageView? // [4]
// it does needs this step
imageViewD = UIImageView()
// late init : this is cool stuff
let imageViewE: UIImageView
imageViewE = UIImageView()