2011-05-24 85 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

相關問題