2011-02-02 2 views
10

Я разрабатываю электронную книгу, и я столкнулся со следующей проблемой. Я использую метод IBAction для публикации NSNotification, который inturn вызывает метод действия после нажатия кнопки. Он работает абсолютно нормально в первый раз ... Метод IBAction должен называться evry time, который я нажимаю на кнопку. После завершения этого действия мне нужно перейти на мою домашнюю страницу, а затем вернуться и снова нажать кнопку. Вот где я столкнулся с проблемой. Метод вызывался больше, чем когда-то со второго раза, а число только продолжает расти .. Пожалуйста, помогите мне с этим ....NSNotification возникает несколько раз

//IBAction Method 
if (sender.tag == PenToolAction) { 

    GLogInfo(@"Pen tool tapped"); 
    [self hideSelf]; 
    [[NSNotificationCenter defaultCenter] postNotificationName:PenToolActionInitialized object:nil]; 
} 
+0

Где вы положили '[[NSNotificationCenter defaultCenter] addObserver :. ..] 'call? – Jilouc

+0

Я поместил это в метод ViewDidLoad класса получателей. –

ответ

35

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

Попробуйте поместить [[NSNotificationCenter defaultCenter] addObserver:...] в метод init или позвонить по телефону [[NSNotificationCenter defaultCenter] removeObserver:self] прямо сейчас.

+2

Прекрасное спасибо! – Elmo

+0

Спасибо, Джилук! –

+0

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

1

Благодарим вас за поддержку ur. Я нашел решение для моего вопроса ... Главный виновник здесь в моем коде - проблема управления памятью ... Я использовал анализатор x-кода для проверки утечки и обнаружили, что я забыл выпустить основную переменную ..... I'v выпустил переменную, и теперь мой код работает нормально ....

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

  • Нет связанных вопросов^_^