A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ios_xiaot 中级黑马   /  2015-7-3 18:24  /  755 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

每个对象都有一个isa,这个isa里面储存了很多关于类对象的一些信息,所以当这个对象编译的时候,程序会通过isa来查看这个对象的类型,即执行的时候再识别叫动态类型识别。而且这个对象里面的方法其实是被封装在SEL里面(有方法ID和内容),当外面利用方法传递消息的时候,先把这个方法ID化,然后找相同ID的方法,找到了就调用,找不到就通过isa里存储的信息往父类找,最终找不到,就报错。(相同的方法签名=相同的ID)
(1)每个对象都可以调用类对象,如果它们是一个类出来的,它们的类对象也是一样的,所以判断对象是否属于同一个类,就判断它们的类对象是否相同,如下
  1. Car * car1=[[Car alloc]init];  
  2.     Car * car2=[[Car alloc]init];  
  3.     if ([car1 class]==[car2 class]) {   //对象名+class就可以调出类对象  
  4.         NSLog(@"same!");  
  5.     }
复制代码
(2)判断某个对象是否属于某一个类,如下:
  1. Car * car1=[[Car alloc]init];  
  2. if ([car1 isMemberOfClass:[Car class]]==YES) {  //类名+class也可以调出类对象  
  3.     NSLog(@"YES!");  
  4. }
复制代码



0 个回复

您需要登录后才可以回帖 登录 | 加入黑马