许多程序猿更喜欢比如Python和Javascript这样的动态语言,因为这些语言并不要求程序猿为每个变量声明和管理它们的类型.
在大多数动态类型的语言里,变量可以是任何类型,而类型声明是可选的或者根本不允许.
Objective-C采用了混合的处理方式:它需要类型声明,但是任何指向一个Objective-C类实例的变量(包括任何从NSObject派生出的类,但不能是所谓的原始类型,比如int,float等等)可以简单的声明为其类型为id,因此可以指向任何Objective-C实例类型.
甚至当使用一个跟严格的声明时,Objective-C编译器也不能对变量的类型做任何严格的保证.