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
}
}
OC id类型的更多相关文章
- OC基础--构造方法 id类型
new方法实现原理: new做了三件事情 1.开辟存储空间 + alloc 方法 2.初始化所有的属性(成员变量) - init 方法 3.返回对象的地址 [Person new]; == [[Pe ...
- oc 中的id类型与类型转换
id是oc语言中一个独特的数据类型.一种通用对象类型.可以转换为任何数据类型,即id类型的变量可以存放任何数据类型的对象. 使用示例: Animal * dog = [[Dog alloc]init] ...
- 关于void*类型的用法(相当于OC中的id类型)
关于void*类型的用法(相当于OC中的id类型) 1.C++语言在对于void* 类型的使用很特别,因为void* 可以间接引用任何其他数据类型的指针,比如int*.float*甚至抽象数据类型的指 ...
- 张超超OC基础回顾_05 property修饰符,id类型,instancetype。。。
一.property 如果给一个属性同时提供了getter/setter方法, 那么我们称这个属性为可读可写属性 如果只提供了getter方法, 那么我们称这个属性为只读属性 如果只提供了setter ...
- OC 动态类型,动态绑定,动态加载
OC 动态类型,动态绑定,动态加载 Objective-C具有相当多的动态特性,基本的,也是经常被提到和用到的有 动态类型(Dynamic typing) 动态绑定(Dynamic binding) ...
- Objective-C 点语法 成员变量的作用域 @property和@synthesize关键字 id类型
点语法 1.利用点语法替换set方法和get方法 方法调用 Student *stu = [Student new]; [stu setAge : 18]; int age = [stu age]; ...
- iOS Foundation框架 -3.利用NSNumber和NSValue将非OC对象类型数据存放到集合
1.Foundation框架中提供了很多的集合类如:NSArray,NSMutableArray,NSSet,NSMutableSet,NSDictionary,NSMutableDictionary ...
- id类型
id类型 在Objective-C 中,id 类型是一个独特的数据类型.在概念上,类似Java 的Object 类,可以转换为任何数据类型.换句话说,id 类型的变量可以存放任何数据类型的对象.在内部 ...
- OC 动态类型和静态类型
多态 允许不同的类定义相同的方法 动态类型 程序直到执行时才能确定所属的类 静态类型 将一个变量定义为特定类的对象时,使用的是静态形态 将一个变量定义为特定类的对象时,使用的是静态类型,在编译的时候就 ...
随机推荐
- Java 第二次实验20145104 张家明
实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设计模式 实验步骤 (一)单元测试 ...
- Python3基础 while 循环示例
Python : 3.7.0 OS : Ubuntu 18.04.1 LTS IDE : PyCharm 2018.2.4 Conda ...
- Java8新特性:Function接口和Lambda表达式参考
Lambda基本:https://blog.csdn.net/wargon/article/details/80656575 https://www.cnblogs.com/hyyq/p/742566 ...
- 51nod 1106 质数检测
#include <bits/stdc++.h> using namespace std; int n; ; bool s[maxn]; void is_prime() { memset( ...
- Codeforces Round #528 div1
完了,看来上一次的flag要应验了,我大概是真的要掉成pupil了吧.. A - Connect Three 这个就是找到x的中间值,y的中间值,然后切一下,然后把所有的点挂到这条边上.但是我做的还是 ...
- The way to Go(1): Introduction
Reference: Github: Go Github: The way to Go Introduction to Go 设计要求: 能够以更快的速度开发软件 开发出的软件能够很好地在现代的多核计 ...
- UVa 147 Dollars(完全背包)
https://vjudge.net/problem/UVA-147 题意: 换零钱,计算方案数. 思路: 完全背包,UVa674的加强版. #include<iostream> #inc ...
- UVa 818 切断圆环链(dfs+二进制枚举)
https://vjudge.net/problem/UVA-818 题意:有n个圆环,其中有一些已经扣在了一起.现在需要打开尽量少的圆环,使得所有圆环可以组成一条链,例如,有5个圆环,1-2,2-3 ...
- python 获取文件的修改时间
os.path.getmtime(name) #获取文件的修改时间 os.stat(path).st_mtime#获取文件的修改时间 os.stat(path).st_ctime #获取文件修改时间 ...
- awk 提取数字
echo b1c2d3d1e8f9 | awk ' { string=$0 len=length(string) for(i=0; i<=len; i++) { tmp=substr(strin ...