Così ho un oggetto CCLayer che ha un oggetto figlio CCSprite, quando una condizione si verifica (rilevata da un metodo di aggiornamento) un metodo della CCSprite è chiamata che si definisce il seguenteObj-c NSNotificationCenter Bad accesso
[[NSNotificationCenter defaultCenter] postNotificationName:@"mymethod" object:nil];
il CCLayer passa poi a correre
[node removeFromParentAndCleanup:YES];
per il CCSprite per rimuoverlo. Il CCLayer chiamato anche seguendo l'init
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mymethod) name:@"mymethod" object:nil];
ora 9 volte su 10 questo va bene e funziona come previsto però a volte ho un bad_access indicando la linea di posta di notifica.
La mia ipotesi di leggere su altre persone che hanno problemi di è che l'oggetto figlio è stato rimosso, ma non so in che altro modo farlo mentre viene chiamato prima che venga rimosso.
Potrebbe accadere qualcosa per ritardare la chiamata alla notifica e sta per essere chiamato dopo che l'oggetto è stato rimosso o sto abbaiando nell'albero sbagliato?
UPDATE
Aggiunto codice di rimozione sopra, se io commento la linea rimozione e la pulizia non accade.
puoi pubblicare il codice in cui rimuovi il bambino? –
potresti voler postare nel metodo onExit, se alla fine la classe genitore è una classe cocos2d. onExit viene richiamato durante il ciclo 'removeFromParent' ed è eseguito prima della rimozione effettiva. Non dimenticarti di [super su uscita]. – YvesLeBorg
Hai provato U o "rimosso" l'oggetto, solo per vedere se succede ancora? – AntonijoDev