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 ...
随机推荐
- Antd组件库,利用Menu组件模拟一个简单Tree组件
当前工作中,前端的主要技术栈用是vue. 那React怎么办呢?总不至于把他扔在墙角吧! 只能在一些很小的项目上,也只有自己一个前端的时候,悄悄的上React. 当然,React项目UI组件还是最喜欢 ...
- LeetCode 866. Prime Palindrome
866. Prime Palindrome(回文素数) 题目: 求出大于或等于 N 的最小回文素数. 回顾一下,如果一个数大于 1,且其因数只有 1 和它自身,那么这个数是素数. 例如,2,3,5,7 ...
- C# WebForm 屏蔽输入框的验证
按钮做界面跳转时,屏蔽输入框的验证可添加属性: CausesValidation="FALSE" <form runat="server"> &l ...
- vue项目中导出PDF的两种方式
参考大家导出的方式,基本上是如下两种: 1.使用 html2Canvas + jsPDF 导出PDF, 这种方式什么都好,就是下载的pdf太模糊了.对要求好的pdf这种方式真是不行啊! 2.调用浏览器 ...
- C++通用框架和库
C++通用框架和库 来源 https://www.cnblogs.com/skyus/articles/8524408.html 关于 C++ 框架.库和资源的一些汇总列表,内容包括:标准库.Web应 ...
- [NOIP10.6模拟赛]2.equation题解--DFS序+线段树
题目链接: 咕 闲扯: 终于在集训中敲出正解(虽然与正解不完全相同),开心QAQ 首先比较巧,这题是\(Ebola\)出的一场模拟赛的一道题的树上强化版,当时还口胡出了那题的题解 然而考场上只得了86 ...
- javaIO——PipedReader & PipedWriter
1. 概述: PipedReader 和 PipedWriter,意为管道读写流.所谓管道,那就是有进有出,所以这也是它们跟其它流对象最显著的区别:PipedReader和PipedWriter必须成 ...
- 查看PHP指定扩展的版本信息
命令:php --ri 扩展名
- android项目笔记整理(3)
61.AlphabetIndexer字母索引辅助类 实现对链表类型的数据进行快速索引. 应用于类似联系人列表右侧的导航栏 注意: 1.链表里的元素必须是Object类型,并实现 ...
- 【loj#2524】【bzoj5303】 [Haoi2018]反色游戏(圆方树)
题目传送门:loj bzoj 题意中的游戏方案可以转化为一个异或方程组的解,将边作为变量,点作为方程,因此若方程有解,方程的解的方案数就是2的自由元个数次方.我们观察一下方程,就可以发现自由元数量=边 ...