5

정적 NSNotification 옵저버 (아래 코드처럼)를 사용할 수 있습니까? 나는 몇 가지 문제가 있는데, 그것은 내 싱글 톤 클래스 구조로 인한 것 같아요.NSNotification 옵저버 클래스?

알림을 수신 대기하는 클래스 인스턴스가 항상있는 것은 아니지만이 클래스의 정적 속성은 응용 프로그램의 수명주기에 영향을 미칩니다.

- (id)init { 
    [super init] 

    [[NSNotificationCenter defaultCenter] addObserver:[self class] 
              selector:@selector(action:aNotification:) 
               name:@"NSSomeNotification" 
               object:nil]; 
    return self; 
} 

+ (void)action:(NSNotification *)aNotification { 
    NSLog(@"Performing action"); 
} 

답변

9

첫 번째 문제는 @selector(action:)해야 당신의 선택 — 수 있습니다.

또한 init에 알림을 등록 하시겠습니까 ([super init]에 대한 호출이 누락 되었습니까? 또 다른 문제 일 수 있음)? 즉, 클래스 인스턴스를 만들 때마다 알림이 (다시) 등록됩니다. 클래스 메소드 대신에 진정한 싱글 톤 객체를 구현하는 것을 고려할 수 있습니다.

+0

선택자입니다. 감사합니다. 나는'[super init]'(나는 전체 기능을 게시하지 않았다)를 호출하고 있음을 반영하여 내 게시물을 편집했다. 또한 여러 번 호출되지 않도록하는 검사가 있으므로 문제가되지 않습니다. Objective-C에서 "진정한 싱글 톤"을 만드는 방법을 보여주는 링크가 있습니까? – Dov

+0

[위키 피 디아 엔트리] (http://en.wikipedia.org/wiki/Singleton_pattern#Objective-C)는 두 가지 주요 기술의 좋은 예입니다. 나는 종종 엄격하지 않은 구현을 사용한다. 이 질문 및 답변보기 : http://stackoverflow.com/questions/145154/what-does-your-objective-c-singleton-look-like – bosmacs