Ich habe NSNotificationCenter in meiner Anwendung implementiert. Ich sende Benachrichtigungen, wenn eine Bilddekodierung durchgeführt wird. Zum ersten Mal wird die Bilddecodierung 8 Mal durchgeführt. So soll die Benachrichtigung 8 mal senden. Aber es ruft 64 mal (8 * 8) auf.NSNotificationCenter ruft mehrere Male an
Hier mein Code ist, wie ich umgesetzt haben -> // Initialisation
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(getHRImage:)
name:@"DecodeComplete" object:nil];}
// Methode aufrufen
-(void)getHRImage:(NSNotification *) notification
{
if ([[notification name] isEqualToString:@"DecodeComplete"])
NSLog (@"Successfully received the DecodeComplete notification! ");
}`
// Ausplanung
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"DecodeComplete" object:self];
//[super dealloc];
}
// Beitrag Benachrichtigung
[[NSNotificationCenter defaultCenter] postNotificationName:@"DecodeComplete" object:self];
Einige können mir vorschlagen, wo ich falsch gemacht habe.
Vielen Dank im Voraus.
// Aufruf der Methode ist wie folgt (Aufruf 8mal)
-(void)decode
{
NSLog(@"---------- Decoding is Complete ---------");
[[NSNotificationCenter defaultCenter] postNotificationName:@"MdjDecodeComplete" object:self];
}
Sie haben nicht genügend Kontext um Ihren Aufruf von "postNotificationName" gezeigt, um eine Antwort zu liefern, aber Sie müssen diese 64 Mal aufrufen - also vermute ich, dass ein Problem mit Ihrer Schleifenstruktur vorliegt. Ich schlage vor, dass Sie entweder mehr Code posten oder einen Breakpoint auf 'postNotificationWithName' setzen und sehen, wo er aufgerufen wird – Paulw11
Haben Sie überprüft, dass Ihre' dealloc' Methoden aufgerufen werden oder nicht? –
Es scheint, dass Sie hinzufügen, beobachten Sie mehrmals und Ihre vorherige hinzugefügte Beobachtung wird nicht entfernt, so erhalten Sie getHRImage-Methode mehrmals. –