2009-05-09 23 views
66

Birisi bana özel bir bildirim, nasıl ateş edileceği, abone olunabileceği ve işlenebileceği bir Cocoa Obj-C nesnesinin örneğini gösterebilir mi?Kakao Özel Bildirim Örneği

+4

belirsiz soru:

[[NSNotificationCenter defaultCenter] removeObserver:self]; 

Ve dağıtılan bildirimlerin gözlemciler için

. Daha spesifik bir soru sormayı deneyin veya Apple'ın dokümanlarını arayın. – danielpunkass

+6

Normalde böyle bir soru üzerine yorum yapmam, ama nasıl bir "con" aldığınızı görmek benim için bir "pro" olabilir. Bu soru, kesinlikle konuyla ilgili bir * özlü * cevap sağlar. Ben sadece bir basit şey bulmak istiyorum - değil * scour * elma'nın belgelerine (muhtemelen büyük olasılıkla olsa da olsa). Bu soruyu sorduğunuz için teşekkürler. +15 atm'ınızı, duygularımla uyumlu bir şekilde sorguladığımı görüyorum. – Jacksonkr

+1

+1 de. Teşekkürler. –

cevap

80
@implementation MyObject 

// Posts a MyNotification message whenever called 
- (void)notify { 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"MyNotification" object:self]; 
} 

// Prints a message whenever a MyNotification is received 
- (void)handleNotification:(NSNotification*)note { 
    NSLog(@"Got notified: %@", note); 
} 

@end 

// somewhere else 
MyObject *object = [[MyObject alloc] init]; 
// receive MyNotification events from any object 
[[NSNotificationCenter defaultCenter] addObserver:object selector:@selector(handleNotification:) name:@"MyNotification" object:nil]; 
// create a notification 
[object notify]; 

Daha fazla bilgi için, NSNotificationCenter belgelerine bakın.

+0

Bildirimi kullanmanın amacı nedir? Neden sadece [object handleNotification] çağırmıyorsunuz? –

+3

Gevşek kaplin. "// başka bir yer" yorumuna dikkat edin ... Bildirim, bir tür yayın mesajıdır. Herhangi bir nesne örneği bir bildirimi dinleyebilir ve belirli bir temsilci protokolüne veya benzerine uymaya ihtiyaç duymaz. Tek bir mesajı dinleyen birçok örnek olabilir. Gönderenin bildirmek istediği nesne örneklerine/işaretlerine sahip olması gerekmez. –

45

Adım 1:

//register to listen for event  
[[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(eventHandler:) 
    name:@"eventType" 
    object:nil ]; 

//event handler when event occurs 
-(void)eventHandler: (NSNotification *) notification 
{ 
    NSLog(@"event triggered"); 
} 

Adım 2:

//trigger event 
[[NSNotificationCenter defaultCenter] 
    postNotificationName:@"eventType" 
    object:nil ]; 
+0

Oh, harika örnek için çok teşekkür ederim. Bu tam ihtiyacım olan şey. – d12frosted

+0

Muhteşem :) Çok teşekkürler –

5

senin nesne ayırmanın bildirim (gözlemci) kaydını emin olun. Apple belgelerinde şu ifadeler yer almaktadır: "Bildirimleri gözlemleyen bir nesne ayrılmadan önce, bildirim merkezinin bildirimleri göndermeyi durdurmasını bildirmesi gerekir".

Yerel Bildirimler için bir sonraki kod geçerlidir:

[[NSDistributedNotificationCenter defaultCenter] removeObserver:self]; 
İlgili konular