這里說的
swift
都是指swift3
的環(huán)境。
swift
是一門類型安全的語言揪荣,并且支持類型推斷
類型推斷
:顧名思義,只能推斷類型
,不能推斷協(xié)議
1.
class TestObj{}
TestObj() is NSObject //false
2.
class TestObj1:NSObject{}
TestObj1() is NSObject //true
swift
是沒有隱式繼承NSObject
的根節(jié)點铅檩,除非顯示繼承。OC存在
Any
是一個空協(xié)議集合的別名莽鸿,它表示沒有實現(xiàn)任何協(xié)議昧旨,因此它可以是任何類型AnyObject
是一個成員為空的協(xié)議,任何對象都實現(xiàn)了這個協(xié)議NSObject
就是一個基類祥得,不過只有在OC
中才隱式繼承
let test = ["a",0] //error ,不能推導出類型
let test:[Any] = ["a",0] //顯示聲明協(xié)議兔沃,類似java的泛型向上轉(zhuǎn)型
let test = ["a" as NSString,0 as NSNumber] //類型推導出NSObject,顯示轉(zhuǎn)型為OC的類型了
protocol cc {}
class TestObj:cc{}
class TestObj1:NSObject,cc{}
let bb:[cc] = [TestObj(),TestObj1()]
總結(jié):
Any
是零個協(xié)議,任何變量
都實現(xiàn)了這個協(xié)議
AnyObject
是一個協(xié)議级及,任何類
都實現(xiàn)了這個協(xié)議
類型推導
和泛型
貫穿的思想