Frage

Dies ist nicht so sehr eine Frage wie ein nachgedachtes Gedanke - warum wirft NsnotificationCenter eine Ausnahme aus, wenn es veröffentlicht wird? Ich bin immer noch neu in der iPhone -Entwicklung und kenne daher noch nicht die Innereien des Kakaos, daher wäre es gut zu verstehen, warum.

Ich beauftrage die StandardCenter zu einer Variablen aufrufen Addobserver: Selektor: Name: Objekt und dann die vorherige Variable veröffentlichen, aber den Anruf an Release benachrichtigen stürzt die App ab. Ich mache im Code nichts Seltsames, daher wäre es interessant, genau herauszufinden, warum es das tut.

Hat jemand dieses Problem gestoßen?

War es hilfreich?

Lösung

Nach dem, was ich von NSNOTIFCation weiß, sollten Sie das StandardCenter nicht einer Variablen zuweisen, sondern etwas wie:

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

In diesem Snippet rufen Sie das Standardzentrum an und registrieren Sie das aktuelle Objekt für eine bestimmte Nachricht.

Und dann, um eine Nachricht an das Benachrichtigungszentrum zu veröffentlichen, das Sie verwenden können:

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

Ich benutze das oben genannte in all meinem Code und habe keine Probleme damit.

Andere Tipps

Es sollte nur ein Standard -Benachrichtigungszentrum für Ihre App geben, daher sollte keiner Ihrer Klassen sie behalten oder freigeben. Sie möchten nicht, dass Ihr Benachrichtigungszentrum auf Ihnen verschwindet, oder?

Ich glaube nicht, dass Sie das Objekt besitzen und es daher nicht freigeben sollten.

Denken Sie an den NARC: New Alloc, behalten, kopieren. Wenn Sie eines davon tun, müssen Sie es veröffentlichen.

Es ist nicht bei Ihnen zu veröffentlichen.

Denken Sie an die NARC-Regel-Sie veröffentlichen nur Dinge, die Sie mithilfe von:

Neue Zuordnung erhalten oder kopieren.

Narc. Sehen?

Was Sie mit nsnotificationCenter machen, ist, dass Sie eine Kopie des Singletons erhalten, die das Standard -Benachrichtigungszentrum darstellt. Es würde sich lohnt, Singletons zu lesen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top