self和Any等关键字
-
T.self:T是实例对象,当前T.self返回的就是本身,如果T是类,T.self返回的就是元类型
-
AnyObject:任意类型,不能表示基本类型
-
Any:代表任意类型,包括funcation类型和Optional类型
-
AnyClass:代表任意实例的类型
-
id:早期等同于AnyObject,现在等同于Any
-
type(of:T):等同于Self 获取一个类的动态类型
Swift Runtime特性
-
对于纯Swift类来说,方法和属性不加任何修饰符的情况下。这个时候不具备Runtime特性
-
对于纯Swift类,方法和属性添加@objc标识的情况下,当我们可以通过Runtime API拿到,但是在OC中是没法进行调度的
-
对于继承自NSObject类来说,如果想动态获取当前的属性和方法,必须在其声明前加上@objc关键字,否则也是没有办法通过Runtime API获取的
-
纯Swift类没有动态性,但在方法、属性前添加dynamic修饰,可获得动态性
-
继承自NSOject的swift类,其继承父类的方法具有动态性,其它自定义方法、属性想要获取动态性,需添加dynamicw修饰
-
若方法的参数、属性类型为swift特有、无法映射到objective-c的类型(如Character、Tuple),则此方法、属性无法添加dynamic修饰(编译器报错)