OC id类型

id数据类型可存储任何类型的对象。从某种意义说,它是一般对象类型。

 

 

-------------------------"NormalMan.h"-----------------------------

#import <Foundation/Foundation.h>

 @interface NormalMan : NSObject

 

// 在一个类中声明一个id对象

// 在此类的方法中让这个id对象performselector 执行某个方法

// 在主调时,先给此类的id类对象赋值 ,让这个id对象有一个明确的类

// 调用此类中的[某个方法] 让这个id类型的对象,去执行方法

 

@property id someOne;

@property SEL buySmoke;

 -(void) run;

 @end

 

-------------------------"NormalMan.m"-----------------------------

 

#import "NormalMan.h"

@implementation NormalMan

-(void) run

{

    // performselector方法中的参数

    /*

        SEL:想要self.someOne执行的方法

         id:执行的方法的参数

        performselector在执行对象不明确时使用

     */

    [self.someOne performSelector:@selector(run) withObject:nil];

    

    [self.someOne performSelector:self.buySmoke withObject:nil];

    //@selector(buyXueGao)==self.buySmoke

    

    // 方法选择器:@selector()

    // 他的类型是:SEL

    

}

@end

 

 

----------------------SuperMan.h-----------------------

#import <Foundation/Foundation.h>

 

@interface SuperMan : NSObject

 

-(void) run;

-(void) buyXueGao;

 @end

----------------------SuperMan.m-----------------------

#import "SuperMan.h"

 @implementation SuperMan

-(void) run

{

    NSLog(@"牛逼哄哄的,快飞");

}

-(void) buyXueGao

{

    NSLog(@"雪糕好吃");

}

@end

 

 

----------------------测试文件-----------------------

 

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {

    @autoreleasepool {        

        NormalMan *shang = [[NormalMan alloc] init];

        

        SuperMan *frank = [[SuperMan alloc] init];

        

        shang.someOne = frank;

        shang.buySmoke = @selector(buyXueGao);

        [shang run];// run,buySmoke

 }

}        

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值