2014-01-08 3 views
-4

Может кто-нибудь показать мне, как создать блок для этого метода, который содержит несколько параметров, поскольку я знаю только, как создавать блоки для одного параметра. addObserverForName: object: queue: usingBlock:Создание блоков для addObserverForName: object: queue: usingBlock:

+0

Что вы имеете в виду? Блок в этом методе принимает только уведомление об ошибке в качестве параметра. Вы не можете использовать блок с разными параметрами. Что ты пытаешься сделать? – Abizern

+0

Я пытаюсь выполнить вызов в книге, и он просит создать блок для этого метода. Как я могу это сделать иначе. – user3090658

+0

Это зависит от того, что вы хотите сделать. – Abizern

ответ

1

Что я делаю, это отправка единственного параметра, который на самом деле является NSDictionary ... поэтому я могу отправить много информации в один параметр. GL HF

0

Метод центра уведомлений addObserverForName: object: queue: usingBlock: имеет фиксированную подпись блока для вызываемого блока. Вы не можете добавить дополнительные параметры в блок.

Однако, как правило, это не проблема. Блоки наследуют область, в которой они определены. Если вы передаете блок центру уведомлений из метода экземпляра объекта, доступны все переменные экземпляра и свойства объекта, делающего вызов, а также локальные переменные в действительном методе, которые делают addObserverForName: object: queue: используяBlock: call.

Система играет в некоторые игры, чтобы это произошло. Локальные переменные копируются из стека в кучу во время передачи блока.

Ссылаясь на «self» в блоке, как правило, это плохая идея. Это может привести к сохранению объекта (self) и созданию циклов сохранения. В этом случае я обычно создаю локальную переменную «сам», которая указывает на себя и устанавливает ее в начале метода.

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