0
是否可以轉發財產?是否可以轉發屬性?
比方說,我有一個代理類,其中有一個名爲string
的屬性。
我想讓我的代理類具有同樣的屬性,也命名爲string
。從那裏,我希望每當我調用代理上的getter/setter時,它就會爲其類成員設置/獲取值。
我來這是爲了實現-forwardingTargetForSelector
並在需要時切換目標,但它不乾淨,也不之實踐最接近(它給警告,您不能使用點語法)
是否可以轉發財產?是否可以轉發屬性?
比方說,我有一個代理類,其中有一個名爲string
的屬性。
我想讓我的代理類具有同樣的屬性,也命名爲string
。從那裏,我希望每當我調用代理上的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];
}
}
這幾乎是我寫的問題...我知道這是存在的。只是覺得它不是「漂亮」。其實@dynamic位是我忘記提及哪些刪除所有警告。 謝謝你的提醒! – 2011-05-25 04:36:37