     
 }
 var sCount = StepCount()
-sCount.count = 1
+//sCount.count = 1
 
 
 /* 类型属性

    }
}

let someClass_1 = SomeSunClass()
SomeSunClass.classTypeMehtod()
SomeSunClass.someTypeMethod()


//var dicTest = ["a":1, "b":2, "c":3]
//print(dicTest["aa"] ?? "none")

}

// 学习点 http://wiki.jikexueyuan.com/project/swift/chapter2/14_Initialization.html
// MARK: 指定构造器和便利构造器
/*
 * 指定构造器
 init(parameters) {
    statements
 }
 
 * 便利构造器
 convenience init(parameters) {
    statements
 }
 
 * 类的构造器代理规则
 为了简化指定构造器和便利构造器之间的调用关系，Swift 采用以下三条规则来限制构造器之间的代理调用：
 
 规则 1:指定构造器必须调用其直接父类的的指定构造器。
 
 规则 2:便利构造器必须调用同类中定义的其它构造器。
 
 规则 3:便利构造器必须最终导致一个指定构造器被调用。
 
 一个更方便记忆的方法是：
 指定构造器必须总是向上代理
 便利构造器必须总是横向代理
 *** 子类中“重写”一个父类便利构造器时，不需要加override前缀 ***
 
 
 * 两段式构造过程
 Swift 中类的构造过程包含两个阶段。第一个阶段，每个存储型属性被引入它们的类指定一个初始值。当每个存储型属性的初始值被确定后，第二阶段开始，它给每个类一次机会，在新实例准备使用之前进一步定制它们的存储型属性。
 
 
 * 你可以用非可失败构造器重写可失败构造器，但反过来却不行。
 */


/* 闭包初始化属性
 * 闭包执行时，实例的其它部分都还没有初始化。这意味着你不能在闭包里访问其它属性，即使这些属性有默认值。
 * 同样，你也不能使用隐式的self属性，或者调用任何实例方法。
 */
class ClassBiBao {
    var name: String = {
        return "闭包初始化"
    }() // （） : 代表立即执行闭包
    
}




// MARK : 析构过程  
// MARK : http://wiki.jikexueyuan.com/project/swift/chapter2/15_Deinitialization.html

/*
 每个类最多只能有一个析构器，而且析构器不带任何参数
 deinit {
    // 执行析构过程
 }
 子类继承了父类的析构器，并且在子类析构器实现的最后，父类的析构器会被自动调用。
    即使子类没有提供自己的析构器，父类的析构器也同样会被调用。
 */



// MARK : ARC
// MARK : http://wiki.jikexueyuan.com/project/swift/chapter2/16_Automatic_Reference_Counting.html

/*
    * 当 ARC 设置弱引用为nil时，属性观察不会被触发。
    * 无主引用通常都被期望拥有值。不过 ARC 无法在实例被销毁后将无主引用设为nil，因为非可选类型的变量不允许被赋值为nil。
 
    * 注意
     Swift 有如下要求：只要在闭包内使用self的成员，就要用self.someProperty或者self.someMethod()（而不只是someProperty或someMethod()）。这提醒你可能会一不小心就捕获了self。
 */


// MARK : 下次看点：http://wiki.jikexueyuan.com/project/swift/chapter2/17_Optional_Chaining.html



























