Wenn initWithCoder überschrieben ist es immer notwendig, um die Anruf [super initWithCoder: Coder]

StackOverflow https://stackoverflow.com/questions/2435203

Frage

In diesem Code ich einen View-Controller bin Laden (und zugehörige View) von einem .xib:

-(id)initWithCoder:(NSCoder *)coder
    {
    // add custom initialisation code here
    [super initWithCoder:coder];
    return self;
    }

Das funktioniert erfolgreich, aber ich weiß nicht wirklich verstehen, was die Linie [super initWithCoder: Coder] vollbringt. Ist das meine View-Controller-Initialisierung nach meiner Ansicht initialisiert wurde?

Bitte so explizit wie möglich bei der Erläuterung. Danke.

War es hilfreich?

Lösung

Ihre Klasse ist eine Unterklasse von UIViewController. Der Anruf wird erzählen Sie Ihre Superklasse (UIViewController) die Schritte zu tun, um es so zu tun braucht, dass Sie Ihre init Schritte tun können. Dies würde alle Eigenschaften der Einrichtung, dass der UIViewController bietet oder die Registrierung für Benachrichtigungen, dass die UIViewController Bedürfnisse seiner Arbeit zu tun.

Es wird vorgeschlagen, fast jedes Mal, wenn Sie eine Methode aus der Superklasse überschreiben, die Super-Klasse-Verfahren zusätzlich zu den Schritten, die Sie ergreifen müssen, rufen.

Edit: Auch wenn Sie brauchen nicht alles in einem Verfahren zu tun, die übergeordnete Klasse bietet, können Sie es einfach auslassen und die Methode der Superklasse wird stattdessen verwendet werden. In diesem Fall würde ich die initWithCoder: Methode nicht zur Verfügung stellen, es sei denn, dass eine Code war Sie Vorform zusätzlich müssen, was Sie zeigte.

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