2010-02-02 4 views
1

NSInvocation, по-видимому, является одной из худших в Cocoa функций, поэтому я решил проверить, написал ли кто-нибудь рецепт, чтобы облегчить его использование. Я нашел рецепт на Matt Gallagher's blog. Теперь, чтобы сделать это, он использовал некоторые довольно хакерские приемы.Функция полезности для NSInvocation

  1. Вы бы рекомендовали использовать этот код или этот метод может привести к ошибке при отладке?
  2. Если нет, что бы вы рекомендовали вместо этого?
+0

С какой целью вы хотите использовать 'NSInvocation'? Это довольно внутренний материал, который вы обычно не используете, если вы не хотите сделать что-то сложное. Обычно просто вызов самого метода или использование KVC достаточно. Поэтому рекомендация зависит от того, что вы хотели бы сделать. – Yuji

+0

Просто для добавления методов к таймеру – Casebash

ответ

2

я использовал этот подход NSInvocation в нескольких iPhone доставки продуктов и продуктах Mac. Он определенно использует несколько странных методов, но это не хрупкий взлома любыми способами: он прочный и примерно такой же быстрый, как и создание NSInvocation.

Вкратце у меня есть ошибка подсчета в коде (долгое время исправлена), но здесь не сложнее отлаживать удержания, чем где-либо еще.

Конечно, мое мнение совершенно необъективно.

+0

Его довольно здорово на самом деле есть автор блога, отвечающий на вопрос, но я действительно искал второе мнение = P – Casebash

+0

После прочтения некоторых других ваших сообщений в блоге я решил, что я доверяй своему мнению о том, что он твердый – Casebash

0

Простейшая функция полезности будет иметь следующий интерфейс

+ (id)retainedInvocationWithTarget:(id)target invocationOut:(NSInvocation 
**)invocationOut args:NSDictionary; 

Это будет иметь тот недостаток, что Nil не может быть принят в течение аргументов. Я думаю, что должно быть лучшим решением

UPDATE: NSNull может быть использован в словарях вместо нуля

Смежные вопросы