1.没有任何关系两个类型之间的转换
let i = 3 let str = "\(i)" //插值法 let str2 = String(i) //强制转换
2.继承链条里的向上与向下转型
class Parent{ var p = 1 } class Child: Parent { var c = 2 } let pins: Parent = Child() //这时要访问子类的c就要判断了 let cins = pins as? Child //返回的是Optional cins?.c //访问到了子类的c //optional 用 if 绑定 if let cins2 = pins as? Child { cins2.c } cins!.c //显示解封 let cins3 = pins as! Child cins3.c let result = pins is Child //判断是否是Child类型,返回true or false let result2 = pins is Parent
AnyObject:表示任意类(class)的类型
Any:任意类型,比如结构,枚举,类,函数等等
class ForAny1 { var fa = 2 } class ForAny2 { var fa2 = 3 } let data:[AnyObject] = [ForAny1(),ForAny2(),ForAny1(),ForAny1(),ForAny2()] //用data来存放不同的类 var any1Count = 0 var any2Count = 0 for item in data { if item is ForAny2 { any2Count++ } if let ins = item as? ForAny1 { ins.fa //输出fa的值 } } any2Count //找出ForAny2()的个数
let dataA:[AnyObject] = [ForAny1(),ForAny1(),ForAny1()] //定义一个ForAny1()的数组类
let data2 = dataA as! [ForAny1] //把值赋给data2去接收
data2[0].fa //取出fa的值
扩展
不能:
1. 不能添加存储属性(应该是对 init 的影响)
2. 不能给属性添加观察者
3. 不能给类添加特定的初始化器
4. 不能给类添加析构函数
给int类型添加计算属性
extension Int { var m: Int { return 1 } var km: Int { return self * 1000 } } let i = 20 i.m i.km
1. 可以用来扩展类,结构,枚举,协议等(即使这些你没有源代码
,系统的都可以)
2. 可以增加但不能重写已存在的功能
------------------------
1. 可以添加实例计算属性与静态计算属性(比如给double类型添加
一些表示长度单位的计算属性)
2.添加实例方法与类方法
3.提供新的初始化方法。
1.可以让别的类型作为新增init的参数
2.或其它的init选项
3.给值类型通过扩展添加init,也可以保留在原值类型中由编译器
自动添加的各种init
4.增加下标
5.让已存在的类型实现一个协议
协议
协议:就是接口的含义
添加属性时:
1.只指定属性的名字与类型,不指定是否是存储与计算属性
2.只能在协议中用static修饰静态属性。但在实现类型可以用class
也可以用static
3.只读属性 var a: Int {get}
4.读写属性var b: Int {get set}
5.协议中的属性总是用var声明的 ,但是在实现时可以实现为let
添加方法时:
1.不需要大括号
2.支持可变长度参数
3.默认值不能在协议中指明
4.静态方法也用static修饰(在协议中)
5.协议中得方法可以添加mutating,在类中得实现中,可以不需要
mutating,在值类型
中得实现中就必须加mutating
//通过某个拓展类来实现某个协议 protocol ExampleProtocol{ var simpleDescription: String{get} mutating func adjust() } extension Int:ExampleProtocol{ var simpleDescription: String { return "The number\(self)" } mutating func adjust() { self+=42 } } var jj:Int=20 jj.adjust() jj.simpleDescription
原文:http://www.cnblogs.com/kangniuniu/p/4957343.html