2012-05-30 4 views
2

ios app, ios 5+에서 xcode 및 objective c를 사용하여 작업하고 있습니다. 좋아, 현재 nsnotifications와 엉망으로 그리고 난 그냥 약간의 혼란이 조금 혼란 메신저로 필요합니다. 내가 관찰자 너무특정 개체에 대한 nsnotification

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showContent:) name:kTPSShowContentNotification object:self]; 

개체 자체로 설정되는 경우처럼 추가보기 제어기가 있다고하자. 나는 그 객체로부터 전송 된 경우에만 그 통지를보고 있다는 것을 의미한다. 내가 틀렸어?

다른 코드에서 나는 currentVC 처음에 설정 한 관찰자가보기 컨트롤러 그래서

[[NSNotificationCenter defaultCenter] postNotificationName:kTPSShowContentNotification object:currentVC]; 

같은 통지를 펼쳤던하고있다. 게시자가 알림 센터에서 해당보기 컨트롤러에서 알림을 전송하도록 알려주므로이 알림을받는 데 필요한 모든 것입니다. 그러나 그것을 잡는 것에 실패하고, 이유에 관해서 확실하지 않습니다. 옵저버를 추가 할 때 객체를 nil로 설정하면 해당 객체를 캐치하지만 해당 옵저버가있는 다른 모든 뷰 컨트롤러 (있는 경우)도 마찬가지입니다. 이 주위에 어떤 방법이 있습니까? 나는 완전히 틀린이 접근인가?

답변

1

나는이 권리를 얻고 경우이 방법을 보내야합니다, 같은 컨트롤러에서 게시하고 알림을 받으려고합니다. 그래서 당신은 같은 것을 수행 할 수 있습니다

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showContent:) name:kTPSShowContentNotification object:self]; 

[[NSNotificationCenter defaultCenter] postNotificationName:kTPSShowContentNotification object:self]; 

을하지만 당신의 currentVC 바르가 매우 동일한 컨트롤러를 가리키는 경우가 실제로 작동합니다. 작동하지 않는다는 사실은 내가 컨트롤러의 동일한 인스턴스를 가리키고 있다고 생각하게 만듭니다.

+0

어리석은 나는 나쁜 포인터를 받고 있었다. 건배! – glogic

2

당신이 작성해야에만 theObjectSendingNotification 개체에서 알림을 수신하려면

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showContent:) name:kTPSShowContentNotification object:theObjectSendingNotification]; 

및 알림을 보내는 객체가

[[NSNotificationCenter defaultCenter] postNotificationName:kTPSShowContentNotification object:self];