Я использовал метод swizzling, чтобы обернуть все вызовы методов в классе с некоторой дополнительной функциональностью. В частности, я был:
- Проверка наличия требуемого объекта для этого вызова метода в кеше
- Если в кеше был возвращен этот объект.
- Если нет, отправьте исходную реализацию, заполните кеш и верните это.
Для каждого метода я буду перенаправлять на рекомендуемый метод. И реализовать новый метод, используя + (BOOL) resolveInstanceMethod: (SEL) sel и IMP_implementationWithBlock.
Он отлично работал, но код не читал красиво. Кажется, что NSProxy обеспечит более простой способ реализовать эту функциональность.
Но еще одной альтернативой было бы просто включить подкласс класса NSObject и метод перехвата вокруг моих методов целевых объектов. Переопределяя forwardInvocation и methodSignatureForSelector, я могу получить требуемый результат.
Так что мне дает NSProxy? Почему я должен использовать это вместо этого?