'' 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)")
网友评论