Domanda

Questa non è così tanto una domanda come un pensiero ponderato: perché NSNotificationCenter lancia un'eccezione quando viene rilasciato? Sono ancora nuovo nello sviluppo di iPhone e quindi non conosco ancora le interiora del cacao, quindi sarebbe bello capire perché.

Sto assegnando il DefaultCenter a una variabile, chiamando ADDOBSERVER: Selettore: Nome: Oggetto e quindi rilasciando la variabile precedente, ma la chiamata a Notify Release Crastra l'app. Non sto facendo nulla di strano nel codice, quindi sarebbe interessante scoprire esattamente perché lo sta facendo.

Qualcuno ha affrontato questo problema?

È stato utile?

Soluzione

Da quello che so di NSNotifcation non dovresti assegnare defaultCenter a una variabile ma piuttosto fare qualcosa del tipo:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showLogin) name:@"IncorrectLogin" object:nil];

In quel frammento si chiama il centro predefinito e registrando l'oggetto corrente per un determinato messaggio.

E poi per pubblicare un messaggio al centro di notifica che puoi utilizzare:

[[NSNotificationCenter defaultCenter] postNotificationName:@"IncorrectLogin" object:nil];

Uso quanto sopra in tutto il mio codice e non ho problemi con esso.

Altri suggerimenti

Dovrebbe esserci solo un centro di notifica predefinito per la tua app, quindi nessuna delle tue lezioni dovrebbe trattenerlo o rilasciare. Non vorresti che il tuo centro di notifica scomparisse su di te, giusto?

Non credo che tu possieda l'oggetto e quindi non dovresti rilasciarlo.

Ricorda il NARC: New Alloc, Conserva, Copy. Se fai uno di questi, devi rilasciarlo.

Non è tuo da rilasciare.

Ricorda la regola NARC: rilasci solo cose che hai portato all'esistenza usando:

Nuovo Allocate trattenere o copiare.

Narc. Vedere?

Quello che stai facendo con NSNotificationCenter è che stai ricevendo una copia del singleton che rappresenta il centro di notifica predefinito. Vale la pena leggere sui singleton.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top