Swift—构造函数

2016-11-29  本文已影响12人  Windv587

'' class Person: NSObject {

''    // 定义 "对象"属性可以使用?

''    var name: String?

''    // 定义 "基本数据类型" 最好赋初始值

''    // Swift中基本数据类型设置为? , super.init()不会分配存储空间

''    // 所以利用KVC赋值会报属性找不到

'' //    var age: Int?

''    var age: Int = 0

''    // 如果要初始化必须要重写init方法, 只要重写了init方法就不用加?号了

''    构造函数

''    * 构造过程是使用类、结构体或枚举类型的实例之前的准备过程

''    * 与 Objective-C 中的构造器不同,Swift 的构造器无需返回值,

''    * 它的主要任务是保证新实例在第一次使用前完成正确的初始化

''    * Swift中所有属性必须再构造方法中进行初始化

''    * 如果不能在构造方法中确定属性的值, 属性必须是可选类型

''    override init()

''    {

''        // 如果属性每次都值都相同, 推荐使用默认属性

''        name = "lnj"

''        age = 30

''    }

''    //Swift中支持方法名重载, 同样的名称只要参数不同就可以

''    // 一旦自定义了init方法, 但是没有重写init方法, 默认的init方法就会失效

''    init(name:String, age:Int)

''    {

''        self.name = name

''        self.age = age

''    }

''    init(dict: [String: NSObject])

''    {

''        // 使用kvc给self赋值之前, 必须调用super.init,

''        // 目的是保证对象创建成功

''        super.init()

''        self.setValuesForKeysWithDictionary(dict)

''    }

'' }

*命名空间(namespace)*

* 默认情况下项目名称就是命名空间

* 同一个项目所有的资源共享, 不需要import可以直接使用

* 使用Swift最好使用cocoapods管理三方框架, 避免命名空间相同导致的冲突

''    //  ()相当于调用了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)")

上一篇下一篇

猜你喜欢

热点阅读