NSObject和反射
如何NSObject和反射
NSObject 常用方法
如何判断 某个对象是否属于某个类或子类
-(BOOL)isKindOfClass:(Class)aClass
判断是否为aClass的实例(不包括aClass的子类)
-(BOOl)isMemberOfClass:(Class)aClass
判断是否实现了aProtocol协议
-(BOOL)conformToProtocol:(Protocol)aProtocol
判断这个类的对象是否拥有参数提供的方法
+(BOOL)instancesRespondToSelector:(SEL)aSelector
判断对象是否拥有参数提供的方法
-(BOOL)respondsToSelector:(SEL)aSelector
延迟调用参数提供的方法,方法所需参数用withobject 传入
-(void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay
//创建Person类
//继承Person的Student类
main.m
#import “Student.h”//enough
id stu=[[[Student alloc]init]autorelease];//Student *stu
//判断类型
//class 方法 返回一个指向结构体的指针

//the following code will judge this object of stu belong to the class of Student
if([stu isKindOfClass:[Student class]]) //Student can be replaced by Person
{
NSLog(@”stu belonged to Person or inherit from Person ”);
}
//only belong can’t inherit
BOOL result=[stu isMumberOfClass:[Student class]]; //Person –>no
//Student.h
@interface Student:Person
-(void)test;
-(void)test1:(int)a;
@end
Student.m
@implementation Student
-(void)test{
NSLog(@”call test”);
}
-(void)test1:(int)a{
NSLog(@”call test1,%i”,a);
}
@end
main.m
// call directly
[stu test];
[stu test1:10];
//indirect call

[stu performSelector:@selector(test:)];
[stu performSelector:@selector(test2:) withObject:];
//只能修改test2
test2:(NSString )str
//最多两个参数
[stu performSelector:@selector(test2:) withObject:@”abc”];
//performSelector在哪个线程调用,test2就在哪个线程
//延迟调用
[stu performSelector:@selector(test2:) withObject:@”abc” afterDelay:2];
//看不到效果,因为命令行项目这个函数一调用完,就是main的结尾,主程序关闭,定时器还有个屁用
反射:根据字符串来实例化一个对象

void reflect(){
NSString *str=@”Person”;
Class class=NSClassFromString(str);
//实例化
Person *person=[[class alloc]init];
NSLog(@”%@”,person);
[person release];
}
NSObject和反射的更多相关文章
- NSObject和反射2
NSObject和反射2. commend +R run id stu=[Student student]; // –> Student *stu=[Student student]; : ...
- [OC Foundation框架 - 16] NSObject和反射
1.判断某个对象是否属于一个类 Student *stu = [[[Student alloc] init] autorelease]; BOOL result= [stu isKindOfClass ...
- Object-c 语法 - NSObject常用方法和反射
NSObject常用方法 - (BOOL)isKindOfClass:(Class)aClass //判断是否为aClass或者aClass的子类的实例,aClass可以通过[类名 class]获取 ...
- NSObject常用方法和反射
// 类的反射 NSString *str = @"Person"; Class class = NSClassFromString(str); Pers ...
- IOS_反射
// // PJReflect.m // 新浪微博 // // Created by pj on 14-8-8. // Copyright (c) 2014年 pj. All rights reser ...
- objective-c(反射)
objective-c中提供类似JAVA的反射特性,给出基本例子如下: #import <Foundation/Foundation.h> @interface ClassA : NSOb ...
- swift 学习(二)基础知识 (函数,闭包,ARC,柯里化,反射)
函数 func x(a:Int, b:Int) {} func x(a:Int, b:Int) -> Void {} func x(a:Int, b:Int) ->(Int,Int ...
- Objective-C 中基于RunTime实现的反射
一.反射 反射,一般表现在字符串和Class转换,字符串和内部方法转换,字符串和属性的转换(取值和赋值). 二.Objective-C中的反射 OC的反射是基于其Runtime实现的. 以执行某个函数 ...
- ios反射
http://www.cr173.com/html/18677_1.html 1.反射获取类属性名和属性类型 unsigned ; objc_property_t *properties = clas ...
随机推荐
- spark调优篇-spark on yarn web UI
spark on yarn 的执行过程在 yarn RM 上无法直接查看,即 http://192.168.10.10:8088,这对于调试程序很不方便,所以需要手动配置 配置方法 1. 配置 spa ...
- 植物大战僵尸:查找植物叠加种植CALL
实验目标:我们都知道植物大战僵尸游戏中植物是不可以叠加种植的,也就是一个格子只能种植一个植物,今天我们将实现一个格子里种植无限多的植物. 我们首先需要找到植物的种植CALL,然后在逐步测试观察功能之间 ...
- 【转载】Jmeter接口测试+压力测试
jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单.因为jmeter是java开发的,所以运行的时候必须先要 ...
- CCF - CCSP 2018-01 绝地求生 BFS
BFS从安全地区方向搞一下就好了 1.还是注意每回合清空 2.posx居然开小了,可不能犯这种错误 3.地图用a和节点的dis重名了,建议其他变量禁止用a命名 4.在输入数据之前continue了,这 ...
- JS 控制特殊字符
1.标签上直接替换方法: JS 控制不能输入特殊字符 1 <input type="text"class="domain"onkeyup="th ...
- ActiveMQ入门系列二:入门代码实例(点对点模式)
在上一篇<ActiveMQ入门系列一:认识并安装ActiveMQ(Windows下)>中,大致介绍了ActiveMQ和一些概念,并下载.安装.启动他,还访问了他的控制台页面. 这篇,就用代 ...
- bootsctrap4 datepicker时间选择插件
现在网上基本都是v3的时间选择插件,花了点时间改了找了个v4能用的 bootstrap-datepicker <!DOCTYPE html> <html> <head&g ...
- openresty获取nginx中的变量
在OpenResty中如何引用这些变量呢? 规则很简单, 如$remote_addr, 在OpenResty里面使用就是ngx.var.remote_adddr.
- 聚类算法之MeanShift
机器学习的研究方向主要分为三大类:聚类,分类与回归. MeanShift作为聚类方法之一,在视觉领域有着广泛的应用,尤其是作为深度学习回归后的后处理模块而存在着. 接下来,我们先介绍下基本功能流程,然 ...
- 设计模式之Template Method
1.设计模式的使用场景 模板方法模式(Template Method) 解释一下模板方法模式,就是指:一个抽象类中,有一个主方法,再定义1…n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承 ...