《初始化和反初始化》
//: [Previous](@previous) // create autho 周双建 // 《初始化和反初始化》 import Foundation // 我们首先创建一个类 class DemoInitAndDeinit { // 我们先介绍主的初始化器 init(){ print("I have be created!") } // 便捷的初始化,是调用上述初始化器必须的 convenience init (Str:String){ self.init() // must be print("I have be created with convenience !") } // 反初始化器 deinit{ print("Game Over") } } //MARK:我们要小试牛刀 var FirstDemo:DemoInitAndDeinit?// 声明一个可变的量 //:我们声明一个类的时候,我们发现,只是声明而没有创建(var FirstDemo:DemoInitAndDeinit?) // 主初始化器 FirstDemo = DemoInitAndDeinit() //:我们是用主初始化器,创建对象的时候,发现对象已经被创建了(FirstDemo = DemoInitAndDeinit() 输出:I have be created!) // 便捷初始化器 FirstDemo = DemoInitAndDeinit(Str:"ZSJ") //:我们使用便捷式初始化的时候,我们发现,对象已经被创建了(FirstDemo = DemoInitAndDeinit(Str:"ZSJ") 输出:I have be created!I have be created with convenience !) // 反初始化器 FirstDemo = nil //:我们发现是对象,returncount为零的时候。我们的反初始化器,开始被调用(FirstDemo = nil 输出: Game Over) //:总结。初始化和反初始化,一个是创建对象,而另一个是释放对象。在我们App的开发中。我们会不时的创建对象,而没有注意对象的释放。但是,我们却不知道一个很有用的方法。那就是:当我们要在某一个对象消失前,在做一些处理和操作,这个时候,就会用到反初始化器。 //:友情链接 // 我们在项目的开发中,会用到一些,比较特殊的类,比如:可以返回nil的类。 class DemoNil{ convenience init?(Value:Int){ self.init()// must be if(Value>6){ return nil }else{ print("你是我小弟") } } } //:我们先声明一个变量 var Nil_First : DemoNil? //:我们要一个为 Nil 的 Nil_First = DemoNil.init(Value: 7) //:我们在要一个不为空的 Nil_First = DemoNil.init(Value: 5) //:我们发现,(输出:你是我小弟) // 总结: 如果想输出一个可以为空的初始化对象,我们就可以在,初始化方法的后面加一个?号,来实现它。 //: [Next](@next) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |