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

}

}

最新文章

  1. 51nod 1459 迷宫游戏 (最短路径—Dijkstra算法)
  2. Hibernate组件映射
  3. ionic tab导航在android 真机测试中 导航在顶部解决办法
  4. node基础02:第一个node程序
  5. 【转载】我也说 IEnumerable,ICollection,IList,List之间的区别
  6. JavaScript 正则表达式提取感兴趣的字符串
  7. 使用Ninject+Moq在单元测试中抽象数据访问层
  8. 0x02全局变量和局部变量
  9. asp.net webform download excel
  10. iframe中的各种跳转方法(转)
  11. servlet清晰理解
  12. 基于jQuery选择器的整理集合
  13. 玩转Spring Cloud之熔断降级(Hystrix)与监控
  14. postgresql如何让主键自增
  15. Java——值传递与引用传递
  16. 【oracle】ORA-12541:TNS:no listener
  17. poj-1287 Networking(Prim)
  18. Css3实现波浪效果2
  19. centos环境自动化批量安装jdk软件脚本
  20. kali linux wifi破解(aircrack)

热门文章

  1. 20145227鄢曼君《网络对抗》MSF基础应用
  2. Python3基础 逻辑运算 and or not 示例
  3. Python3基础 try-except-finally 的简单示例
  4. Ansible 入门指南 - 常用模块
  5. 第八章 对称加密算法--AES
  6. java中子类实例化过程中的内存分配
  7. 【TCP/IP详解 卷一:协议】第9章 IP选路
  8. DFS回溯-函数递归-xiaoz triangles
  9. UVa 10285 最长的滑雪路径(DAG上的最长路)
  10. python 数据交换