NSProxy

本文介绍了NSProxy,一个Objective-C的抽象类,用于消息转发。NSProxy不同于NSObject,它不提供默认构造器,子类需要实现消息转发相关方法。NSProxy会将自省方法转发到实际对象,简化代理类设计,常用于解决循环引用问题。文章还讨论了NSProxy与NSObject的消息转发机制的差异,以及如何使用NSProxy设计代理类。
摘要由CSDN通过智能技术生成

吾尝以为NSObject是Apple的所有Objective-C引用类型的老祖宗,直到后来知道了NSProxy的存在…

NSProxyclass NSObject平级,彼此没有继承关系;唯一的相同点是它们都遵循protocol NSObject。尚未在开发中使用过NSProxy,最近琢磨需求开发的方案时注意到了这个类的存在,有不少疑问,譬如NSproxy存在的意义是什么?如何使用它呢?本文将疑惑记录下来,并尝试自我解惑。

NSProxy简介

NSProxy是一个抽象类,它实现了protocol NSObject所要求的基本方法,譬如内省相关的-isKindOfClass:、派发消息相关的performSelector系列方法等;但是不能直接使用它创建对象。

子类化NSProxy的要求也很简单,实现-forwardInvocation:-methodSignatureForSelector:这两个方法即可;显然,这两个方法与消息转发相关,实现这两个方法的典型姿势是:

- (void)forwardInvocation:(NSInvocation *)anInvocation {
   
    [anInvocation invokeWithTarget:_realObject];  // _realObject是自定义的实例变量
}(NSMethodSignature *
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值