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 动态类型和静态类型
多态 允许不同的类定义相同的方法 动态类型 程序直到执行时才能确定所属的类 静态类型 将一个变量定义为特定类的对象时,使用的是静态形态 将一个变量定义为特定类的对象时,使用的是静态类型,在编译的时候就 ...
随机推荐
- SQL学习之简单增删改查
SQL最常用的语句,就是增删改查: 增删改查的对象,分别是库(文件夹),表(文件),表的内容(表的记录): 一.创建一个基本的表 #create table Student_Info (Name VA ...
- Centos下安装git高版本2.1.2
安装依赖软件 # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc # yum in ...
- 怎么说, 开发会很乐意去主动修改bug?
怎么说, 开发会很乐意去主动修改bug? 一图顶上千言万语,如下:
- 20145336《网络对抗技术》Exp6 信息搜集技术
20145336张子扬 <网络对抗技术> 信息搜集与漏洞扫描 实验内容 使用whois进行域名注册信息查询,使用nslookup进行域名查询 实现对IP地理位置的查询 使用PING.nam ...
- C++ shared_ptr的用法
一. http://www.cnblogs.com/welkinwalker/archive/2011/10/20/2218804.html 二.http://www.cnblogs.com/Tian ...
- 字符串分割(C++)(转载)
转载出自:http://www.cnblogs.com/MikeZhang/archive/2012/03/24/MySplitFunCPP.html 经常碰到字符串分割的问题,这里总结下,也方便我以 ...
- ISSCC 2017论文导读 Session 14:A 0.62mW Ultra-Low-Power Convolutional-Neural-Network Face-Recognition Pro
A 0.62mW Ultra-Low-Power Convolutional-Neural-Network Face-Recognition Processor and a CIS Integrate ...
- shiro(1) 介绍
一.什么是shiro (1)属性:java框架 (2)用途:身份验证.用户授权.加密.会话管理 (3)优点:轻量.易用 二.三大组件 (1)subject:代表当前主体,与当前应用交互的任何东西都是s ...
- 2018/7/18Bad English
1 So instead of enjoying anime because it can portray interesting stories in a form that would be im ...
- Java DateUtil,日期整理
import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp ...