Можно ли переадресовать свойства? - PullRequest
0 голосов
/ 24 мая 2011

Возможно ли переадресация имущества?

Допустим, у меня есть прокси-класс, в котором есть член, который, в свою очередь, имеет свойство с именем string.

Я хочу, чтобы у моего прокси-класса было то же свойство с именем string. Оттуда я хотел бы, чтобы всякий раз, когда я вызывал метод получения / установки на прокси, он устанавливал / получал значение для своего члена класса.

самое близкое, что я нашел, - это реализация -forwardingTargetForSelector и переключение цели, когда это необходимо, но это не чисто и не практично (это дает предупреждение, и вы не можете использовать точечный синтаксис)

1 Ответ

0 голосов
/ 24 мая 2011

Вы можете объявить свойства как @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];
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...