首先 在iOS中,id的数据类型是一个比较特殊的类型,它可以存储任何类型的对象,也可以转化为任何对象(但是要转化正确)
那么为什么不把所有的对象都声明为 id 类型呢?有几个理由:
1、当你声明一个对象为静态时,由于该对象的类型编译时已经确定了,而 id 类型的对象是编译时不去确定它的类型,等到运行时才去确定它的类型,
所以 id 类型的对象不能存储静态对象。
2、声明 id 类型的对象在编译时不会去检查是否出错,只有在运行时才会check,所以一旦 id 类型的对象出错,不能及时知道错误在哪里。
3、id 类型的对象不能直观的理解是哪个的对象,而确定对象的类型比较容易直观的理解其是什么类型。