Type Encodings 就是编译器把 method 的参数列表和返回类型用一个字符串表示出来, 这是为了方便 runtime 使用.这个字符串也会和 method 的 selector 对应起来.
在 swift 里面由于不支持 动态性 所以不用 Type Encoding, 但比如继承了 NSObject 对象或者用 dynamic 来修饰都会让编译器知道这个是支持 动态性 的,所以会调用 Type Encoding. 简言之就是来源于 OC 的方法都会支持 动态性 (也就是会使用 Type Encoding ), 否则就需要通过加 dynamic 来告诉编译器了.
Type Encoding 不支持在 swift 中出现的新类型, 比如 tuple.
Property Type String 也使用 @encode 来标识 property 的类型和变量名.
网友评论