如何解决是否可以转发属性?
| 是否可以转发财产? 假设我有一个代理类,该类具有一个成员,该成员又具有一个称为“ 0”的属性。 我希望我的代理类具有相同的属性,也称为“ 0”。从那里,我希望每当我在代理上调用getter / setter时,它都会在其类成员上设置/获取值。 我最接近的是实现-forwardingTargetForSelector
并在需要时切换目标,但这既不干净也不实用(它发出警告,并且您不能使用点语法)
解决方法
您可以将属性声明为
@dynamic
,并实现这两种方法来处理转发-methodSignatureForSelector:
和forwardInvocation:
。实施将在下面进行描述-
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector {
if ( alpha && [alpha respondsToSelector:aSelector] ) {
return [alpha methodSignatureForSelector:aSelector];
} else {
return [super methodSignatureForSelector:aSelector];
}
}
- (void)forwardInvocation:(NSInvocation *)anInvocation {
if ( alpha && [alpha respondsToSelector:[anInvocation selector]] ) {
[anInvocation invokeWithTarget:alpha];
} else {
[super forwardInvocation:anInvocation];
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。