Programing

"EXC_BAD_ACCESS"예외를 유발하는 NSNotificationCenter 게시물

lottogame 2020. 11. 27. 07:39
반응형

"EXC_BAD_ACCESS"예외를 유발하는 NSNotificationCenter 게시물


A UIViewController는 기본 센터에 자신을 추가합니다.

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(editFood)
 name:@"editFood"
 object:nil];

그런 다음 UITableView델리게이트 NSObject는 NSNotification다음을 게시합니다 .

[[NSNotificationCenter defaultCenter]
 postNotificationName:@"editFood"
 object:self];

런타임 중에 EXC_BAD_ACCESS 예외가 발생합니다.

가되어 defaultCenter어딘가에 발표하기? UIViewController에서 UIViewController에 알림을 게시 할 때도 동일한 개념이 작동하지만 중요하지 않습니다.


구독자 중 한 명이 할당 해제되었습니다. [[NSNotificationCenter defaultCenter] removeObserver:self]당신의 dealloc 을 호출 하십시오 (빠르지 않다면).


EXC_BAD_ACCESS dealloc이 다음과 같이 존재하는지 확인한 후에도 발생할 수 있습니다.

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self]
}

위의 내용은 대부분의 경우 문제를 해결하지만 분명히 내 원인은 다음과 같이 selector:설정된 옵저버를 간접적으로 추가 nil했기 때문입니다.

[NSNotificationCenter.defaultCenter addObserver:self
                                         selector:nil
                                             name:notificationName
                                           object:nil];

... 내가 그 뭔가를 게시 할 때, 그래서 notificationName, EXC_BAD_ACCESS발생했습니다.

해결책은 실제로 무언가를 가리키는 선택기를 보내는 것이 었습니다.

참고 URL : https://stackoverflow.com/questions/5668752/post-of-nsnotificationcenter-causing-exc-bad-access-exception

반응형