2011-05-24 52 views
0

是否可以转发财产?是否可以转发属性?

比方说,我有一个代理类,其中有一个名为string的属性。

我想让我的代理类具有同样的属性,也命名为string。从那里,我希望每当我调用代理上的getter/setter时,它就会为其类成员设置/获取值。

我来这是为了实现-forwardingTargetForSelector并在需要时切换目标,但它不干净,也不之实践最接近(它给警告,您不能使用点语法)

回答

0

您可以按照申报的特性@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]; 
    } 
} 
+0

这几乎是我写的问题...我知道这是存在的。只是觉得它不是“漂亮”。其实@dynamic位是我忘记提及哪些删除所有警告。 谢谢你的提醒! – 2011-05-25 04:36:37

相关问题