5

Statik bir NSNotification gözlemcisine sahip olmak mümkün mü (aşağıdaki kod gibi)? Bazı problemler yaşıyorum ve bence bu tek kişilik sınıf yapıma bağlı olabilir.NSNotification gözlemcisi olarak sınıf?

Bildirimleri dinlemek için her zaman bir sınıf örneğim yok, ancak bu sınıfın statik özellikleri uygulamanın ömrünü uzatıyor.

- (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"); 
} 

cevap

9

ilk sorun @selector(action:) olmalıdır senin seçici — olabilir. Ayrıca, bildirimi init (başka bir sorun olabilir [super init], herhangi bir çağrı eksik olan) kaydetmek istediğiniz emin misiniz? Bu, sınıfınızın bir örneğini her oluşturduğunuzda bildiriminizin (yeniden) kaydedileceği anlamına gelir. Sınıf yöntemleri yerine gerçek bir tekil nesneyi uygulamayı düşünebilirsiniz.

+0

Seçiciydi, teşekkürler. Yazımı, [süper init] 'dediğimi yansıtmak için düzenledim (tüm işlevimi yayınlamadım). Ayrıca, birden çok kez çağrılmadığından emin olan bir çek var, bu da sorun değil. Objective-C'de "gerçek bir singleton" un nasıl yapılacağını gösteren bir bağlantınız var mı? – Dov

+0

[Vikipedi girişi] (http://en.wikipedia.org/wiki/Singleton_pattern#Objective-C) iki ana tekniğin iyi bir örneğidir. Sık sık katı olmayan uygulamayı kullanırım. Ayrıca bu soruya ve cevaplara da bakın: http://stackoverflow.com/questions/145154/what-does-your-objective-c-singleton-look-like – bosmacs

İlgili konular