Swift教程第二章(5)

swift language part-2.5

Swift教程第二章(5)–Swift基础

构造过程、析构函数、自动引用计数、类型转换、类型嵌套

##构造过程

###构造器

class SomeClass{
	var count:Double
	init(){
		count=0
	}
}

###默认属性

class SomeClass{
	var count:Double=0
	init(){

	}
}

###有参的构造函数

class SomeClass{
	var count:Double
	init(count:Double){
		self.count=count
	}
}

###构造函数重载 定义多个init方法,包含的函数签名不同

###构造器链 Swift采用以下规则来限制构造器件的代理调用:

  • 指定构造器必须总是向上代理
  • 便利构造器总是横向代理
class Food{
	var name:String
	init(name:String){
		self.name=name
	}
	convenience init(){
		self.init(name:"[Unnamed]")
	}
}

##析构函数 使用deinit标示析构函数

##自动引用计数 使用ARC实现,引用计数只应用在类的实例,结构和美剧类型是值类型,并非引用类型,不是引用的方式来存储和传递的

##类型转换

###类型检查 使用is进行类型检查

if _cla is SomeClass{
	//to do something
}

###向下转型 使用as尝试向下转到他的子类型

if let _cla as? SomeClass{
	//use _cla to do something
}

注:转换并没有改变实例或值,只是把它当成某种类型使用

###AnyObject类型 AnyObject可以代理任何class类型的实例

使用API的时候会使用到接受AnyObject[]类型的数组,它接受任意类型对象组成的数组

###Any类型 Any可以表示出了方法类型以外的任何类型

使用Any类型来混合不同的类型,包括非class类型

var tings=Any[]()
things.append(0)
things.append(0.0)
things.append("123")
things.append((1,2))
things.append(SomeClass())

##类型嵌套 ###定义

###类型嵌套的引用