id

id 声明的对象有什么特性?

id 声明的对象具有运行时的特性,即可以指向任意类型的objcetive-c的对象;

 

id 是一个动态数据类型
通过静态数据类型定义变量,不能调用子类特有的方法
通过动态数据类型定义变量,可以调用子类特有的方法
通过动态数据类型定义变量,可以调用私有方法
 
弊端:由于动态数据类型可以调用任意方法,所以有可能调用不到不属于自己的方法,而可能导致运行时的错误
应用场景:多态,可以减少代码量,避免调用子类特有的方法需要强制类型转换
 
为了避免动态数据类型引发的运行时错误,一般情况下如果使用动态数据类型定义一个变量,在调用这个变量的方法之前进行一次判断,判断当前变量是否能够调用这个方法
 
isKindOfClass:判断指定的对象是否是某一个类,或者是某一个类的子类  
posted @ 2016-03-02 22:20  翌日晨曦  阅读(240)  评论(0编辑  收藏  举报