Zaimplementowałem NSNotificationCenter w mojej aplikacji. Wysyłam powiadomienie po zakończeniu dekodowania obrazu. Po raz pierwszy dekodowanie obrazu zostanie wykonane 8 razy. Tak więc powiadomienie powinno wysłać 8 razy. Ale wywołuje 64 razy (8 * 8).NSNotificationCenter dzwoni wiele razy
Oto mój kod, jak i wdrożyliśmy -> // Inicjalizacja
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(getHRImage:)
name:@"DecodeComplete" object:nil];}
// wywołanie metody
-(void)getHRImage:(NSNotification *) notification
{
if ([[notification name] isEqualToString:@"DecodeComplete"])
NSLog (@"Successfully received the DecodeComplete notification! ");
}`
// dealokacji
- (void) dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"DecodeComplete" object:self];
//[super dealloc];
}
// post Powiadomienie
[[NSNotificationCenter defaultCenter] postNotificationName:@"DecodeComplete" object:self];
Ktoś może zasugerować mi, gdzie popełniłem błąd.
Z góry dziękuję.
// Wywołanie metody jest tak (wywołanie 8 razy)
-(void)decode
{
NSLog(@"---------- Decoding is Complete ---------");
[[NSNotificationCenter defaultCenter] postNotificationName:@"MdjDecodeComplete" object:self];
}
Nie pokazałeś wystarczającej ilości kontekstu dla połączenia z "postNotificationName", aby podać odpowiedź, ale musisz wywoływać to 64 razy - więc podejrzewam, że jest jakiś problem z twoją strukturą pętli. Proponuję, abyś dodał więcej kodu lub umieścił punkt przerwania na 'postNotificationWithName' i sprawdził, gdzie jest on nazywany – Paulw11
czy sprawdziłeś, czy twoja metoda' dealloc' jest wywoływana czy nie? –
wydaje się, że dodajesz obserwować wiele razy, a twoja poprzednia dodana obserwacja nie jest usunięta, więc otrzymujesz metodę getImage wielokrotnie. –