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

}

}

OC id类型的更多相关文章

  1. OC基础--构造方法 id类型

    new方法实现原理: new做了三件事情 1.开辟存储空间  + alloc 方法 2.初始化所有的属性(成员变量) - init 方法 3.返回对象的地址 [Person new]; == [[Pe ...

  2. oc 中的id类型与类型转换

    id是oc语言中一个独特的数据类型.一种通用对象类型.可以转换为任何数据类型,即id类型的变量可以存放任何数据类型的对象. 使用示例: Animal * dog = [[Dog alloc]init] ...

  3. 关于void*类型的用法(相当于OC中的id类型)

    关于void*类型的用法(相当于OC中的id类型) 1.C++语言在对于void* 类型的使用很特别,因为void* 可以间接引用任何其他数据类型的指针,比如int*.float*甚至抽象数据类型的指 ...

  4. 张超超OC基础回顾_05 property修饰符,id类型,instancetype。。。

    一.property 如果给一个属性同时提供了getter/setter方法, 那么我们称这个属性为可读可写属性 如果只提供了getter方法, 那么我们称这个属性为只读属性 如果只提供了setter ...

  5. OC 动态类型,动态绑定,动态加载

    OC 动态类型,动态绑定,动态加载 Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有 动态类型(Dynamic typing) 动态绑定(Dynamic binding) ...

  6. Objective-C 点语法 成员变量的作用域 @property和@synthesize关键字 id类型

    点语法 1.利用点语法替换set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge : 18]; int age = [stu age]; ...

  7. iOS Foundation框架 -3.利用NSNumber和NSValue将非OC对象类型数据存放到集合

    1.Foundation框架中提供了很多的集合类如:NSArray,NSMutableArray,NSSet,NSMutableSet,NSDictionary,NSMutableDictionary ...

  8. id类型

    id类型 在Objective-C 中,id 类型是一个独特的数据类型.在概念上,类似Java 的Object 类,可以转换为任何数据类型.换句话说,id 类型的变量可以存放任何数据类型的对象.在内部 ...

  9. OC 动态类型和静态类型

    多态 允许不同的类定义相同的方法 动态类型 程序直到执行时才能确定所属的类 静态类型 将一个变量定义为特定类的对象时,使用的是静态形态 将一个变量定义为特定类的对象时,使用的是静态类型,在编译的时候就 ...

随机推荐

  1. Web安全学习笔记之DES算法实例详解

    转自http://www.hankcs.com/security/des-algorithm-illustrated.html 译自J. Orlin Grabbe的名作<DES Algorith ...

  2. linux 挂载硬盘 + 对硬盘 分区

    parted命令可以划分单个分区大于2T的GPT格式的分区,也可以划分普通的MBR分区 fdisk命令对于大于2T的分区无法划分,所以用fdisk无法看到parted划分的GPT格式的分区 1. 用 ...

  3. 09: xmltodict 模块将xml格式转成json格式

    1.1 : xmltodict 模块将xml格式转成json格式 <?xml version="1.0"?> <!--#版本号--> <data> ...

  4. codevs 1380 没有上司的舞会 - 树形动态规划

    题目描述 Description Ural大学有N个职员,编号为1~N.他们有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.每个职员有一个快乐指数.现在有个周年庆宴会 ...

  5. UVa 11991 一道简单题

    https://vjudge.net/problem/UVA-11991 题意:给出一个包含n个整数的数组,你需要回答若干询问.每次询问两个整数k和v,输出从左到右第k个v的下标. 思路: 把每个数字 ...

  6. shell模拟ctrl c停止

    kill命令可以带信号号码选项,也可以不带. 如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源. 也可以用kill向进程发送特定的信 ...

  7. MongoDB(课时11 嵌套集合)

    3.4.2.6 嵌套集合运算 MongoDB数据库里每个集合数据可以继续保存其它的集合数据.例如:有些学生信息中需要保存家长信息. 范例: 增加数据 db.students.insert({" ...

  8. 消息/事件, 同步/异步/协程, 并发/并行 协程与状态机 ——从python asyncio引发的集中学习

    我比较笨,只看用await asyncio.sleep(x)实现的例子,看再多,也还是不会. 已经在unity3d里用过coroutine了,也知道是“你执行一下,主动让出权限:我执行一下,主动让出权 ...

  9. URAL 1635 Mnemonics and Palindromes

    URAL 1635 思路:区间dp+贪心,先n^2处理出每段区间是否是回文串,然后贪心地找每一段1到i的最少分割. 代码: #include<bits/stdc++.h> using na ...

  10. vuejs2点滴

    在Vue定义一个不被添加getter setter 的属性: https://github.com/vuejs/vue/issues/1988 博客: 0.vux的x-input源码分析. http: ...