iOS开发笔记(4)---- 反射

本文探讨了iOS开发中的反射机制,利用runtime特性实现类型、对象和方法的解耦。详细介绍了如何通过对象和类型名称获取类型,实例化对象(包括单例),以及方法调用。同时,文章提到了通过反射获取属性的方法,并强调了performSelector只能调用无参方法,有参方法需直接调用。最后,展示了如何在运行时获取实例方法列表。
摘要由CSDN通过智能技术生成

反射的强大之处在于,我们可以将对象与依赖对象之间完全解耦,创建对象可以不引用头文件,操作属性、方法可以不依赖于对象,操作对象可以不依赖于类型,操作类型可以不依赖于引用等等等等。最直观的效果是,即使不引用头文件亦可操作类型、对象及对应属性与方法。
借助强大的runtime特性,在iOS平台上我们也得以实现反射。

//使用前需要先引用runtime头文件
#import <objc/runtime.h>

在这里,我们创建一个示例类型IPZClassOne 并声明四个有代表性的方法。


@interface IPZClassOne : NSObject

+ (void) classMethod;              //类型方法
+ (IPZClassOne*) getSingleLeton;   //单例
- (void) instanceMethod;           //实例方法
- (void) onFinshedHandler:(NSString *) completeHandler;//含参数方法

@end

类型反射

获取类型分为两种,通过对象获取和通过类型名称获取。

  • 通过对象获取: Class class = [self class];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值