2015-10-12 3 views
0

Я добавил NSNotificationCenter в UIView, когда я впервые зашел на страницу, NSNotificationCenter работает нормально. Однако, когда я покинул эту страницу и обратно на эту страницу еще раз, он будет выдавать ошибкуiOS Исключение добавления NSNotificationCenter в UIView

'NSInvalidArgumentException', reason: '-[UITextMagnifierTimeWeightedPoint updateProfile:]: unrecognized selector sent to instance. 

Вот код.

UIView1:

- (void)changeUIView { 
    UIView2 *view = [[UIView2 alloc] init]; 
    // show UIView2 
} 

UIView2:

- (id)init { 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateProfile:) name:@"updateProfile" object:nil]; 
    return self; 
} 

-(void)updateProfile:(NSNotification *)notification { 
    // do something 
} 

- (void)dealloc { 
    [[NSNotificationCenter defaultCenter] removeObserver:@"updateProfile"]; 
} 

- (void)buttonClick { 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"updateProfile" object:nil userInfo:nil]; 
} 
+0

где вы выполняете инициализацию супервизора? –

+0

Я обновил сообщение –

ответ

0

Всегда

ДобавитьNSNotificationCenter в viewDidAppear

И

УдалитьNSNotificationCenter в viewDidDisAppear

+0

Спасибо за ваш комментарий. Позвольте мне попробовать сначала. –

+0

Эти функции доступны в жизненном цикле UIViewController, а не в UIView. –

+0

Ой ... да, я использую UIView вместо UIViewController. –

1

Вы должны удалить self в качестве наблюдателя не selector вы используете для работы на уведомление

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

Или, если вы хотите быть конкретнее вы можете использование

[[NSNotificationCenter defaultCenter] removeObserver:self name:@"updateProfile" object:nil]; 
+0

Спасибо, я сделал это с вами комментарий. –

+0

Если это правильный ответ, не могли бы вы согласиться, чтобы другие знали – Flexicoder