이상한 문제가 있습니다. ViewController.m
에서 성공적인 저장 후 알림을 게시하고 Segue를 ListViewController
으로 수행합니다. ListViewController.m
에는 observer를 viewDidLoad
에 설정하고 처리 방법을 선언합니다.NSNotification 처리기 메서드 내에서 코드가 실행되지 않아도 메서드가 제대로 호출됩니다.
문제는 핸들러 메소드가 호출되었지만 내부에서 코드가 실행되지 않는다는 것입니다. 왜 그런가?
// ViewController.m
if (success) {
[[NSNotificationCenter defaultCenter] postNotificationName:kAHPlistSavedSuccessfully object:self];
[self performSegueWithIdentifier:kAHDetailToListSegue sender:self];
}
// ListViewController.m
- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(plistSavedSuccessfully:) name:kAHPlistSavedSuccessfully object:nil];
}
- (void)plistSavedSuccessfully:(NSNotification *)notification
{
NSLog(@"notification %@", notification);
[self someMethod]; // not called !
}
이것은 plistSavedSuccessfully의 로그 메시지입니다. notif = NSConcreteNotification 0x1f5406f0 {name = plistSavedSuccessfully; object =} –
alexhajdu
NSLog를 출력하고 있다면'someMethod'도 실행해야합니다. 'someMethod'는 무엇입니까? 그 안에 NSLog를 추가하고 확인해 보셨습니까? – iDev
@ACB 예, someMethod의 NSLog가 작동하지만 ListViewController 콘센트를 수정하려고하면 작동하지 않습니다. – alexhajdu