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