1、编译器只对确定类型进行检查;
2、类型转换是否能够成功有没有明确的判断;编译时or运行时;
3、任意类型不参与编译时类型检查;
任意类型不能直接参与运算,必须转化为确定的类型;
任意类型转化为确定类型是否需要显式转化。
强类型:类型检查(编译时)和转化(运行时)都有明确的状态信息;
中类型:类型检查(编译时)强制,转换无明确状态信息;
弱类型:全部无;
动态类型:
任意类型变量中包含类型信息,可以在运行时获取;
继承类型(动态):变量中包含类型信息;
id x = self;
UIView *res = x;
[res addSubview:[UIView new]];