'' class Person: NSObject {
''? ? // 定義 "對(duì)象"屬性可以使用?
''? ? var name: String?
''? ? // 定義 "基本數(shù)據(jù)類型" 最好賦初始值
''? ? // Swift中基本數(shù)據(jù)類型設(shè)置為? , super.init()不會(huì)分配存儲(chǔ)空間
''? ? // 所以利用KVC賦值會(huì)報(bào)屬性找不到
'' //? ? var age: Int?
''? ? var age: Int = 0
''? ? // 如果要初始化必須要重寫init方法, 只要重寫了init方法就不用加?號(hào)了
''? ? 構(gòu)造函數(shù)
''? ? * 構(gòu)造過程是使用類蛋欣、結(jié)構(gòu)體或枚舉類型的實(shí)例之前的準(zhǔn)備過程
''? ? * 與 Objective-C 中的構(gòu)造器不同,Swift 的構(gòu)造器無需返回值祸挪,
''? ? * 它的主要任務(wù)是保證新實(shí)例在第一次使用前完成正確的初始化
''? ? * Swift中所有屬性必須再構(gòu)造方法中進(jìn)行初始化
''? ? * 如果不能在構(gòu)造方法中確定屬性的值, 屬性必須是可選類型
''? ? override init()
''? ? {
''? ? ? ? // 如果屬性每次都值都相同, 推薦使用默認(rèn)屬性
''? ? ? ? name = "lnj"
''? ? ? ? age = 30
''? ? }
''? ? //Swift中支持方法名重載, 同樣的名稱只要參數(shù)不同就可以
''? ? // 一旦自定義了init方法, 但是沒有重寫init方法, 默認(rèn)的init方法就會(huì)失效
''? ? init(name:String, age:Int)
''? ? {
''? ? ? ? self.name = name
''? ? ? ? self.age = age
''? ? }
''? ? init(dict: [String: NSObject])
''? ? {
''? ? ? ? // 使用kvc給self賦值之前, 必須調(diào)用super.init,
''? ? ? ? // 目的是保證對(duì)象創(chuàng)建成功
''? ? ? ? super.init()
''? ? ? ? self.setValuesForKeysWithDictionary(dict)
''? ? }
'' }
*命名空間(namespace)*
* 默認(rèn)情況下項(xiàng)目名稱就是命名空間
* 同一個(gè)項(xiàng)目所有的資源共享, 不需要import可以直接使用
* 使用Swift最好使用cocoapods管理三方框架, 避免命名空間相同導(dǎo)致的沖突
''? ? //? ()相當(dāng)于調(diào)用了alloc init
''? ? let p = Person()
''? ? print("\(p.name), \(p.age)")
''? ? let p2 = Person(name: "lmj", age: 50)
''? ? print("\(p2.name), \(p2.age)")
''? ? let p3 = Person(dict: ["name": "lnj", "age": 30])
''? ? print("\(p3.name), \(p3.age)")