如何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和反射的更多相关文章

  1. NSObject和反射2

    NSObject和反射2. commend +R  run id stu=[Student student]; // –>   Student *stu=[Student student]; : ...

  2. [OC Foundation框架 - 16] NSObject和反射

    1.判断某个对象是否属于一个类 Student *stu = [[[Student alloc] init] autorelease]; BOOL result= [stu isKindOfClass ...

  3. Object-c 语法 - NSObject常用方法和反射

    NSObject常用方法 - (BOOL)isKindOfClass:(Class)aClass //判断是否为aClass或者aClass的子类的实例,aClass可以通过[类名 class]获取 ...

  4. NSObject常用方法和反射

    // 类的反射    NSString *str = @"Person";    Class class = NSClassFromString(str);        Pers ...

  5. IOS_反射

    // // PJReflect.m // 新浪微博 // // Created by pj on 14-8-8. // Copyright (c) 2014年 pj. All rights reser ...

  6. objective-c(反射)

    objective-c中提供类似JAVA的反射特性,给出基本例子如下: #import <Foundation/Foundation.h> @interface ClassA : NSOb ...

  7. swift 学习(二)基础知识 (函数,闭包,ARC,柯里化,反射)

    函数 func x(a:Int, b:Int)  {}   func x(a:Int, b:Int) -> Void {}  func x(a:Int, b:Int) ->(Int,Int ...

  8. Objective-C 中基于RunTime实现的反射

    一.反射 反射,一般表现在字符串和Class转换,字符串和内部方法转换,字符串和属性的转换(取值和赋值). 二.Objective-C中的反射 OC的反射是基于其Runtime实现的. 以执行某个函数 ...

  9. ios反射

    http://www.cr173.com/html/18677_1.html 1.反射获取类属性名和属性类型 unsigned ; objc_property_t *properties = clas ...

随机推荐

  1. Antd组件库,利用Menu组件模拟一个简单Tree组件

    当前工作中,前端的主要技术栈用是vue. 那React怎么办呢?总不至于把他扔在墙角吧! 只能在一些很小的项目上,也只有自己一个前端的时候,悄悄的上React. 当然,React项目UI组件还是最喜欢 ...

  2. LeetCode 866. Prime Palindrome

    866. Prime Palindrome(回文素数) 题目: 求出大于或等于 N 的最小回文素数. 回顾一下,如果一个数大于 1,且其因数只有 1 和它自身,那么这个数是素数. 例如,2,3,5,7 ...

  3. C# WebForm 屏蔽输入框的验证

    按钮做界面跳转时,屏蔽输入框的验证可添加属性:  CausesValidation="FALSE" <form runat="server"> &l ...

  4. vue项目中导出PDF的两种方式

    参考大家导出的方式,基本上是如下两种: 1.使用 html2Canvas + jsPDF 导出PDF, 这种方式什么都好,就是下载的pdf太模糊了.对要求好的pdf这种方式真是不行啊! 2.调用浏览器 ...

  5. C++通用框架和库

    C++通用框架和库 来源 https://www.cnblogs.com/skyus/articles/8524408.html 关于 C++ 框架.库和资源的一些汇总列表,内容包括:标准库.Web应 ...

  6. [NOIP10.6模拟赛]2.equation题解--DFS序+线段树

    题目链接: 咕 闲扯: 终于在集训中敲出正解(虽然与正解不完全相同),开心QAQ 首先比较巧,这题是\(Ebola\)出的一场模拟赛的一道题的树上强化版,当时还口胡出了那题的题解 然而考场上只得了86 ...

  7. javaIO——PipedReader & PipedWriter

    1. 概述: PipedReader 和 PipedWriter,意为管道读写流.所谓管道,那就是有进有出,所以这也是它们跟其它流对象最显著的区别:PipedReader和PipedWriter必须成 ...

  8. 查看PHP指定扩展的版本信息

    命令:php --ri 扩展名

  9. android项目笔记整理(3)

    61.AlphabetIndexer字母索引辅助类       实现对链表类型的数据进行快速索引. 应用于类似联系人列表右侧的导航栏 注意:       1.链表里的元素必须是Object类型,并实现 ...

  10. 【loj#2524】【bzoj5303】 [Haoi2018]反色游戏(圆方树)

    题目传送门:loj bzoj 题意中的游戏方案可以转化为一个异或方程组的解,将边作为变量,点作为方程,因此若方程有解,方程的解的方案数就是2的自由元个数次方.我们观察一下方程,就可以发现自由元数量=边 ...