[Swift学习之一]构造器

昨天刚接触swift就被它的语法弄晕了,今天先拿构造器开刀~。

我oc写的不多,但构造函数随便写,反正自己用么,也没有错误提示。经典的错误就是成员未初始化。

刚用swift写个小东西,问题马上来了。

http://my.oschina.net/hejunbinlan/blog/470123

可以看看这里面的,这哥们写的,我也几乎都遇到了。下面是我写的代码,就这么点儿东西,整了半天~

import Foundation
import UIKit

class MyObject:UIRefreshControl {
    var  MyName: NSString
    typealias ActionExcute = () -> ()
    var action: ActionExcute
    
    init(MYaction:ActionExcute) {
        self.action = MYaction
        self.MyName = "aaa"
        super.init()
    }
    
    init(name : NSString, MYaction:ActionExcute) {
        MyName = name
        self.action = MYaction
        super.init()
    }
    
    convenience init(Age:NSInteger, name1: NSString,MYaction1:ActionExcute)
    {
        self.init(name:name1,MYaction:MYaction1)
    }
    
    var BoolArray: [Bool] =
        {
            var result = [Bool]()
            print(result)
            var isBlack = false
            result.append(false)
            return result
    }()

    func refrsh() {
        let a = BoolArray
        if !a[0] {
            print(a)
        }
        self.action()
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
总结

(1)单看这个Swift比oc可强太多了,连c++都比不上,c++里面的构造函数不能互相调用。Delphi虽然能调用,但没有这么多的错误检查。

(2)不管是指定的构造函数,还是便利的构造函数,它折腾这么多,目的只有一个,保证用你的类创建对象的安全,使成员变量全部初始化。

(3)Swift要求在构造器里面,先初始化自己的变量,再调用父类的,这个和其他语言不一样啊。c++是先初始化父类,delphi写哪都行,oc也没要求啊。

        这就导致了,初始化过程中,不能用继承下来的东西,因为还没初始化~

你可能感兴趣的:(swift,构造器)