码迷,mamicode.com
首页 > 其他好文 > 详细

Object-C-Foundation-反射

时间:2015-06-16 10:50:37      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:

主要方法和类型

 Class 变量名 = [类或者对象 class];

Class 变量名  = [类或者对象 superclass];

 Class 变量名  = NSClassFromString(方法名字的字符串);

NSString *变量名 = NSStringFromClass(Class 参数);

•通过类名的字符串形式实例化对象
Class class = NSClassFromString(@"Student");
id obj = [[class alloc]init];

NSLog(@"创建的对象为: %@",obj);

将类名转换为字符串
NSString *className = NSStringFromClass(class);
NSLog(@"类名:%@",className);
对象在运行时获取其类型的能力称为内省
ObjC具有很多动态特性
而在实际使用中,使用introspection来确定该对象的实际所属类:
NSObject 提供了一些简单的查询运行时系统信息的方法:
 
- (BOOL)isKindOfClass:(Class)aClass 
判断对象是不是属于指定类型或其子类
- (BOOL)isMemberOfClass:(Class)aClass 
判断对象是不是属于指定类型
+ (BOOL)isSubclassOfClass:(Class)aClass;
判断一个类型是否是另一个类型的子类型
 
- (BOOL)conformsToProtocol:(Protocol *)aProtocol;
判断某个类/对象是否实现某个协议
使用@protocol封装后传入
// - (BOOL)conformsToProtocol:(Protocol *)aProtocol;       
[student conformsToProtocol:@protocol(MyProtocol)];     
// 或者使用类方法       
// + (BOOL)conformsToProtocol:(Protocol *)protocol;       
[Student conformsToProtocol:@protocol(MyProtocol)];
 
对象复合(composition),即对象中又包含对象,表达的时“has a”的关系;
向对象中的对象发送消息:使用嵌套的中括号,如:
[tom cardWithNumber:9999]draw:1000];
访问对象中的对象的属性,使用连续的点操作符,如:
tom.car.balance
注意:中括号和点操作符不能同时使用!!
 

Object-C-Foundation-反射

标签:

原文地址:http://www.cnblogs.com/Opaser/p/4579878.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!