zoukankan      html  css  js  c++  java
  • Swift-自定义类的构造函数

    构造函数类似oc中的init方法
    默认情况下,创建一个,类会调用一个构造函数
    即使没写任何构造函数,编译器会默认一个构造函数
    如果是继承NSObject,可以对构造函数重写

    class Person: NSObject {
        var name: String?
        var age:Int = 0
        
    //    重写
        override init() {
    //        在构造函数中,如果没有明确调用super.init(),那么系统会帮助调用
            super.init()
        }
        
    //    自定义构造函数
        init(name:String,age:Int) {
            self.name = name
            self.age = age
        }
        
    //    init(dict:[String : AnyObject]) {
    ////        这种写法会报错
    ////        name = dict["name"]
    ////        age = dict["age"]
    ////        因为字典取值是一个可选类型
    //        
    //       let tempname = dict["name"]
    ////        tempname是一个AnyObject可选类型
    ////        as?最终转成的类型是一个可选类型,name是可选类型
    //        name = tempname as?String
    //        
    //       
    ////        age 是一个确定的int行
    ////        as!最终转换的是一个确定类型(这是在强制解包,危险,如果没值,会崩溃)
    //        let tempage = dict["age"]
    //        age = tempage as!Int
    //        
    ////        优化后的写法(可选绑定)
    //        if let tempage = dict["age"] as?Int {
    //            age = tempage
    //        }
    //        
    //    }
        
        
        //        常用方法kvc
        init(dict : [String : AnyObject]) {
            super.init()
            setValuesForKeysWithDictionary(dict)
        }
        
    }
    
    let p = Person()
    
    let p1 = Person.init(name: "why", age: 12)
    print(p1.name)
    
    let p2 = Person.init(dict: ["name":"ee","age":23])
  • 相关阅读:
    JavaScript基础知识——异步和单线程
    JavaScript基础知识——作用域和闭包
    JavaScript基础知识——原型和原型链
    JavaScript基础知识——变量类型与计算
    JavaScript 学者必看“new”
    Javascript中颇受诟病的「this错乱」问题
    Python之路
    Python
    Python
    python所遇问题合集(持续更新)
  • 原文地址:https://www.cnblogs.com/WJJ-Dream/p/5829766.html
Copyright © 2011-2022 走看看