Objective-C id和instancetype

id类型 和 应用场景
 
  IOS5之后推出了instancetype类型
 
  instancetype和id的访问
  (1) 相同点
     都可以作为方法的返回类型
 
  (2) 不同点
  1.instancetype可以返回和方法所在类相同类型的对象,id只能返回未知类型的对象
  2.instancetype只能作为返回值,不能像id那样作为参数
 
 
  id是一个通用的类型
  id就是动态绑定,运行时才知道类型
 

  id应用场景


 <span style="font-size:14px;"> @interface Animal : NSObject
  -(void)run;
  @end
  @implementation Animal
  -(void)run{
    NSLog(@"动物在跑!");
  }
  @end
 
  @interface Dog : Animal
  -(void)run;
  @end
  @implementation Dog
  -(void)run{
    NSLog(@"狗在跑!");
  }
  @end
 
  int main(){
    Animal *animal = [Animal new];
    [animal run];//动物在跑
    
    Animal *animal2 = [Dog new];
    [animal2 run];//狗在跑!
    
    NSObject *obj = [Animal new];
    [(Animal*)obj run];//动物在跑
    
    obj = [Dog new];
    [(Dog*)obj run];//狗在跑

    //由于id是一个通用的类型,可以转换任何类型
    //id就是动态绑定,运行时才检查类型
    id dog = [Dog new];
    [dog run];
       
    
    return 0;
  }
 
 
  -(BOOL) isMemberOfClass: classObj
  判断是否是这个类的实例,子类不算
  格式:
  BOOL bb = [dog isMemberOfClass : [Animal class]];//输出0
  BOOL bb2 = [animal isMemberOfClass: [Animal class]];//输出1
 
  判断是否是这个类的子类
  格式:
  BOOL bb3 = [Dog isSubclassOfClass : [Animal class]];//输出1
  BOOL bb4 = [[dog class] isSubclassOfClass : [ani class]];//输出1
  BOOL bb5 = [dog isKindOfClass: [Dog class]];//输出1
  </span>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值