NSObject和反射2

NSObject和反射2。

commend +R  run

id stu=[Student student]; // –>   Student *stu=[Student student];

:也是方法名的一部分

主要是反射:reflect 根据字符串来实例化一个对象

//#pragma mark reflect according to class name

void reflect(){

NSString *[email protected]”Person”;

Class class=NSClassFromString(str);//convert a string to a class

Person *person=[[class alloc]init];

NSLog(@”%@”,person);

[person release];

NSString *str=NSStringFromClass([Person class]);//obtain class name

}

//#pragma mark reflect method

Person.h

@interface Person:NSObject

-(void)test;

@end

Person.m

@implementation

-(void)test{

NSLog(@”Call test method in Person.”);

}

@end

void reflectmethod(){

NSString *[email protected]”test”;

//Convert this string to a method

//通过字符串调用方法名

SEL selector=NSSelectorFromString(method);

[person performSelector:(selector)];

[person release];

// Convert a(SEL) selector to a string

NSString *selectorName=NSStringFromSelector(selector);

}

时间: 2024-08-04 20:03:32

NSObject和反射2的相关文章

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

1.判断某个对象是否属于一个类 1 Student *stu = [[[Student alloc] init] autorelease]; 2 BOOL result= [stu isKindOfClass:[Person class]]; 3 NSLog(@"%i", result); 4 5 //判断对象是否属于某个类,不包括子类 6 NSLog(@"%i",[stu isMemberOfClass:[Student class]]); 7 NSLog(@&q

OC——Foundation—常用的类(5)——NSObject和反射、copy语法

反射: OC反射机制是指:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性,这种动态获取信息以及动态调用对象的方法的功能成为OC的反射机制. Class反射 通过类名的字符串形式实例化对象 将类名变成字符串 SEL的反射 通过方法的字符串形式实例化方法 将方法变成字符串 //类名的反射 NSString *str=@“Person”; Class class=NSClassFromString(str); Person *person

NSObject常用方法和反射

NSObject常用方法 - (BOOL)isKindOfClass:(Class)aClass //判断是否为aClass或者aClass的子类的实例,aClass可以通过[类名 class]获取 - (BOOL)isMemberOfClass:(Class)aClass //判断是否为aClass的实例(不包括aClass的子类) - (BOOL)conformsToProtocol:(Protocol)aProtocol //判断对象是否实现了aProtocol协议 + (BOOL)ins

SEL 类型 和 类的反射

SEL 类型 SEL 类型是用来描述一个方法的,可以理解为SEL是方法的指针.该SEL类型类似于Java中的Method类.OC中可以通过两种方法来获得SEL类型. @selector(methodName) : NSSelectorFromString(@"methodName") ; 反射的方法 -(BOOL) isKindOfClass : (class) clazz isKindOfClass 方法用来判断当前对象是否是一个类或者其子类的实例 [cat isKindOfClas

反射实现NSCodingProtocol 帮助类

// .h文件#import <Foundation/Foundation.h> @interface NSCodingProtocolHelper : NSObject +(void)encodeWithCoder:(NSCoder *)aCoder andObj:(id)obj; +(id)initWithCoder:(NSCoder *)aDecoder andObj:(id)obj; @end // .m文件#import "NSCodingProtocolHelper.h&

IOS_反射

// // PJReflect.m // 新浪微博 // // Created by pj on 14-8-8. // Copyright (c) 2014年 pj. All rights reserved. // #import "PJReflect.h" #import "PJFiled.h" #import <objc/runtime.h> #import <Foundation/NSObjCRuntime.h> @implementa

编程基础知识——C++能不能支持Java和ObjC的反射?

C++能不能支持Java和ObjC的反射? 要回答这个问题,首先我们要清楚什么是反射.什么是反射? 教科书的解释我就不说了,(^o^)其实我也记不得.实际开发应用的反射就是在没有某个类型的头文件或者类结构定义的情况下,存取这个类型的对象的成员字段的值,调用这个对象的成员函数(方法). 比如我有定义了一个类型 Class  A,里面有 a,b,c三个字段,有fun()函数.现在我手里只有一个 void* pA,注意它的类型只是一个void指针,我手里也没有Class的头文件,我要怎么样得到,a,b

iOS反射机制: objc_property_t的使用

iOS属性反射:说白了,就是将两个对象的所有属性,用动态的方式取出来,并根据属性名,自动绑值.(注意:对象的类,如果是派生类,就得靠其他方式来实现了,因为得到不该基类的属性.) 常用的反射方式,有如下两种: 从一个自定义实体类->自定义实体类 从一个NSDictionary->自定义实体类(此方式最最常用,如网络Json数据会组成NSDictionary.sqlite查询数据,可以用第三方组件组成NSDictionary)直接上码,(这里码在NSObject类别中)获取对象所有属性:- (NS

objective-c(反射)

objective-c中提供类似JAVA的反射特性,给出基本例子如下: #import <Foundation/Foundation.h> @interface ClassA : NSObject{ int _id1; int _id2; int _id3; } @property int _id1; @property int _id2; @property int _id3; -(void) setId1:(int)id1 andId2:(int)id2 andId3:(int)id3;