**
类的property必须要在designation initializer里实例化, 不然就用optional
var str:String?
问号(?) 暗示包含的值是可选类型,也就是说可能包含 String 值也可能不包含值。
有时候在程序架构中,第一次被赋值之后,可以确定一个可选类型总会有值。在这种情况下,每次都要判断和解析可选值是非常低效的,因为可以确定它总会有值。
var str:String!
感叹号( String! )来声明一个隐式解析可选类型
**