1.类型定义:
/// 这里将MyInt定义为Int32类型 typealias MyInt = Int32 /// 这里将MyArrayInt定义为[MyInt]数组类型 typealias MyArrayInt = [MyInt]
2.元类型:
“元类型(metatype)是指可引用某个类型的类型对象的类型。” 摘录来自: “大话Swift 4.0”。 iBooks.
let a = 10.self // 输出:a = 10 print("a = (a)") let tuple = (10, 0.5, "abc").self // 输出:tupe = (10, 0.5, "abc") print("tupe = (tuple)") func foo() { print("Foo...") } // 这里直接输出:Foo... foo.self()
3.类型获取:
let mc: Prot = MyClass() // 这里通过type(of:)函数来获取mc对象的元类型实体, // type(of: mc)所返回的类型就是MyClass.Type typeFetch(t: type(of: mc))
4.Any和AnyObject:
“Swift编程语言中提供了两个根类型,
一个是 Any,它可用于指向Swift中的任一类型,
包括函数类型与元组类型;
还有一个是 AnyObject,它其实是一个协议类型,用于指向Swift中的任一类类型的对象引用。
引入 AnyObject 的主要目的还是为了能与Objective-C进行方便对接。” 摘录来自: “大话Swift 4.0”。 iBooks.
struct MyStruct { } class MyClass { } func foo() { } // 声明Any类型的对象obj var obj: Any // obj指向MyStruct结构体的对象实例 obj = MyStruct() // obj指向MyClass类的对象实例 obj = MyClass() // obj指向一个(Int, Double, String)元组对象 obj = (1, 2.0, "abc") print("obj = (obj)") // obj指向函数foo的引用 obj = foo // 这里定义了AnyObject类型的对象引用cls // 并将它指向MyClass对象实例 let cls: AnyObject = MyClass()
5.类型投射:
“在Swift编程语言中提供了两种类型投射操作符,分别为 as! 与 as?。
由于向下投影操作可能会失败,所以一般情况下我们可以使用 as? 进行操作,它返回一个Optional对象,
如果投射失败,则会返回空值 nil。
如果我们能确保当前对象能被安全投射到我们所指定的类型,那么可以使用 as!。
该操作符直接返回类型投射之后的对象,不过如果万一投射失败,则运行时就会发生异常崩溃。” 摘录来自: “大话Swift 4.0”。 iBooks.
6.类型检查:
if obj is Child { print("This is Child") }
7.嵌套类型:
“嵌套类型中可访问外部类型中的私有成员,但外部类型则不可访问其嵌套类型的私有成员。” 摘录来自: “大话Swift 4.0”。 iBooks.