Могу ли я изменить информацию о пользователе в уведомлении - PullRequest
0 голосов
/ 09 декабря 2011

Мне нужно создать прерываемые зацепки в цели c. Прерываемые перехватчики должны иметь возможность прервать операцию, если какой-либо из обратных вызовов перехватчиков прервет операцию. Я думал об использовании NSNotificationCenter для этого, как:

NSMutableDictionary *userInfo = [NSMutableDictionary dictionary];
[userInfo setObject: [NSNumber numberWithBool: NO] forKey: @"interrupted"];
[notificationCenter postNotificationName: @"Operation A will happen"
                                  object: self userInfo:userInfo];
if(![[userInfo objectForKey: @"interrupted"] boolValue])
{
    [self doOperationA];
}

и со стороны крюка

-(void) operationAWillHappen: (NSNotification *) note
{
    if(someCondition)
        [(NSMutableDictionary *)note.userInfo setObject:
         [NSNumber numberWithBool: YES] forKey: @"interrupted"];
}

Могу ли я так изменить информацию о пользователе? Есть ли лучший способ реализации прерываний в цели c?

Ответы [ 2 ]

0 голосов
/ 09 декабря 2011

Я предполагаю, что это работает, но поскольку API является неизменным объектом, вы не должны этого делать.Он может сломаться, если это произойдет сегодня.

Вы всегда можете передать себя в словаре, и слушатели отправят ему сообщение.

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

0 голосов
/ 09 декабря 2011

Это совершенно небезопасно, и вы, вероятно, сломаете свое приложение, если сделаете это.

Я думаю, что вам нужен шаблон " делегат или делегирование ".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...