美文网首页
Swift—构造函数

Swift—构造函数

作者: Windv587 | 来源:发表于2016-11-29 18:08 被阅读12次

    '' 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)")

    相关文章

      网友评论

          本文标题:Swift—构造函数

          本文链接:https://www.haomeiwen.com/subject/zgqzpttx.html