4 Stimmen

Wann verwendet man `self` in Objective-C?

Es ist jetzt mehr als 5 Monate, dass ich in Objective-C bin, ich habe auch meine erste App im App Store veröffentlicht, aber ich habe immer noch einen Zweifel über eine Kernfunktionalität der Sprache.

Wann soll ich die self auf iVars zugreifen und wann nicht?

Bei der Freigabe einer Steckdose schreiben Sie self.outlet = nil in viewDidUnload, stattdessen in dealloc Sie schreiben [outlet release] . Warum?

6voto

Nekto Punkte 17779

Wenn Sie schreiben self.outlet = nil die Methode [self setOutlet:nil]; genannt wird. Wenn Sie schreiben outlet = nil; Sie greifen auf die Variable outlet direkt.

wenn Sie @synthesize outlet; dann Methode setOutlet: wird automatisch erzeugt und gibt das Objekt frei, bevor ein neues zugewiesen wird, wenn Sie die Eigenschaft als @property (retain) NSObject outlet; .

3voto

PJR Punkte 12924

Sehr wichtiger Blog zum Verständnis der Eigenschaften der Getter-Setter-Methode in Objective C

                Understanding your (Objective-C) self

http://useyourloaf.com/blog/2011/2/8/understanding-your-objective-c-self.html

1voto

Kheldar Punkte 5319

Sie verwenden self, wenn Sie sich auf eine @Eigenschaft beziehen. Normalerweise wurde sie @synthesize'd.

Sie verwenden self nicht, wenn Sie sich auf eine "private" Variable beziehen. Normalerweise verwende ich Eigenschaften für UI-Elemente wie UIButtons oder für Elemente, die von anderen Klassen aus leicht erreichbar sein sollen. Sie können die @privat , @protected-Modifikatoren, um die Sichtbarkeit explizit zu erzwingen. Sie können jedoch keine privaten Methoden verwenden, die es in Objective-C nicht gibt.

Der Teil über nil, release und dealloc hat nichts mit der Verwendung von "self" zu tun. Sie geben frei, was Sie behalten haben, und Sie löschen, was automatisch gespeichert wird.

Sie sollten die Objective-C Anleitung Es ist gut geschrieben und sehr aufschlussreich.

0voto

paxx Punkte 1059

Sie verwenden self. wenn Sie auf Eigenschaften der Klasse zugreifen, in der Sie sich befinden (daher self). Grundsätzlich verwenden Sie self, wenn Sie einen Wert beibehalten wollen, aber nur, wenn Sie retain in Ihrer Eigenschaft Definition haben.

release gibt nur das Objekt frei, das Sie behalten haben. Sie sollten nicht etwas freigeben, das Sie nicht behalten haben, da dies zu einem Absturz führen wird (Zombie-Objekt).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X