2011-02-02 4 views
10

전자 책 리더를 개발 중이며 다음 문제가 발생했습니다. 내가 IBNction 메서드를 사용하여 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 :. ..]'전화? – Jilouc

+0

나는 그것을 receivers 클래스의 ViewDidLoad 메서드에 넣었다. –

답변

35

가 여러 번 호출하는 방법에 알림 관찰자를 추가하면 .... 당신을 방법은 두 번에서 한 번 이상 호출 점점 그 수는이 날 도와주세요 ... 계속 증가 알림을 여러 번 받게됩니다.

시도는 init 방법에 [[NSNotificationCenter defaultCenter] addObserver:...]를 대신 넣어 또는 직전 [[NSNotificationCenter defaultCenter] removeObserver:self]를 호출하는 중.

+2

완벽한 감사합니다! – Elmo

+0

감사합니다 Jilouc! –

+0

사과가 더 좋을 것이라고 생각합니다. 그리고 개체가 이미 지정된 알림에 등록되어 있는지 확인할 수 있도록 공개 API가 더 좋았 으면합니다. – LightningStryk

1

고마워요. 내가 내 질문에 대한 해결책을 찾았어요. 내 코드에서 주요 범인은 메모리 관리 문제입니다. 저는 x 코드 분석기를 사용하여 누수를 발견하고 주요 변수를 공개하는 것을 잊어 버렸습니다. ..... 변수를 공개 했으므로 이제는 내 코드가 잘 작동합니다 ....