设为首页 加入收藏

TOP

Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id)等
2014-11-24 11:55:03 来源: 作者: 【 】 浏览:0
Tags:Objective-C 语法 动态 类型 isKindOfClass isMemberOfClass

对象在运行时获取其类型的能力称为内省。内省可以有多种方法实现。


判断对象类型


-(BOOL) isKindOfClass: classObj判断是否是这个类或者这个类的子类的实例


-(BOOL) isMemberOfClass: classObj 判断是否是这个类的实例


我们试试这两个方法的使用。






打印结果:


2012-07-04 14:23:07.965 ObjectiveCTest[2460:f803] teacher Teacher类的成员


只有第一个判断打印出来,isMemberOfClass判断是否是属于这类的实例,是否跟父类有关系他不管。



2012-07-04 14:34:17.315 ObjectiveCTest[2595:f803] teacher Teacher类或Teacher的子类


2012-07-04 14:34:17.316 ObjectiveCTest[2595:f803] teacher Person类或Person的子类


2012-07-04 14:34:17.316 ObjectiveCTest[2595:f803] teacher NSObject类或NSObject的子类


+(BOOL) instancesRespondToSelector: 判断类是否有这个方法。此方法是类方法,不能用在类的对象


这里不写对象的创建和释放了,参考上面的代码




2012-07-04 14:39:49.853 ObjectiveCTest[2723:f803] teacher responds to setSize: method


2012-07-04 14:39:49.854 ObjectiveCTest[2723:f803] teacher class responds to alloc method


中间的那个判断我随便写了个selector,当然没有了。respondsToSelector 检查类方法 alloc返回YES



3、Objective-C的id类型



下面看看使用,


先把Teacher类中的 teach方法修改一下,改成



-(void)teach


{


NSLog(@"%@ 教数学" ,name);


}


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Objective-C语法之内存管理 下一篇脚本编程基础知识点总结

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++ Lambda表达式保 (2025-12-26 05:49:45)
·C++ Lambda表达式的 (2025-12-26 05:49:42)
·深入浅出 C++ Lambda (2025-12-26 05:49:40)
·C语言指针从入门到基 (2025-12-26 05:21:36)
·【C语言指针初阶】C (2025-12-26 05:21:33)