Deklarieren von Instanzvariablen in iOS - Objective-C
Ok, ich habe viel gelesen um in diesen Tagen über dieses Thema und ich alwyas verwirrt, weil die Antworten ist anders, jedes Suche ich stellen.
Ich muss wissen, der beste Weg, um zu erklären Instanz-Variablen in iOS. So weit ich weiß, sollte ich nur erklären, Sie innerhalb .m-Datei und verlassen .h reinigen. Aber ich kann es nicht: der compiler gibt mir die Zusammenstellung fehlerhaft.
Hier ist ein code aus .m nur.
@interface UIDesign ()
//.m file
{
NSString *test2 = @"test2";
}
@property (nonatomic, assign) int privateInt;
@end
@implementation UIDesign
{
NSString *test1 = @"test1";
}
Beide strings sind falsch deklariert und ich weiß nicht, warum. Der compiler sagt: erwartet ';' am Ende der Erklärung Liste.
Die Frage ist also: wie kann ich erklären Instanz-Variablen? Ich werde nur müssen Sie innerhalb der Klasse.
InformationsquelleAutor David Lopes | 2013-05-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie Sie nicht initialisieren von Instanzvariablen. Sie sind alle initialisiert auf null oder Nullen. So-compiler erwartet ein Semikolon, wenn Sie schreiben ein Gleichheitszeichen.
Können Sie initialisieren Sie Sie in init-Methode.
Wenn Sie möchten, initialisieren Sie Sie ja. Sie haben.
Ich denke nicht, dass du musst, aber Sie können. Zum Beispiel können Sie die
(void)viewDidLoad
Methode zum speichern Ihrer init-Zeilen. Weil diese Methode wird aufgerufen, wenn der view geladen wird (wie es heißt...). Für meine eigenen, die ich selten Schreibe meine eigenen init-Methode in einigen viewController, außer wenn ich wirklich eine Menge von Variablen. In iOS, benutze ich nur die Kommentarzeichen vor der viewDidLoad-Methode init-Variablen.Diese Klasse ist nicht ein ViewController. Es ist nur eine Klasse, die ich implementieren, um mir zu helfen, das recycling einige meiner code.
Neben anderen Motivationen für ein -init... (Parameter init, ich. e.) können Sie Ihre Entscheidung, indem Sie diese Schlussfolgerung: 1) Die RTE automatisch eingestellt, alle ivars Darstellungen der 0 (NULL, null, Null, 0, 0.0). 2) Sie sollte nicht ein ivar auf die Darstellung der 0, da der 1). 3) Wenn Sie nicht haben ein ivar, festlegen, um einen anderen Wert dann eine Darstellung der 0 (und keine anderen init-code, wie Registrierung $wo), ein -init... wäre leer = unnütz. Umgekehrt: Wenn Sie haben, um ein ivar zunächst um etwas anderes als eine Darstellung von 0, fügen Sie eine -init...
InformationsquelleAutor Gabriel
Die Sie versuchen, hinzufügen einer Instanz-variable zu einer Klasse-Erweiterung oder der Kategorie der nicht unterstützt wird. [BEARBEITEN 2013-05-12 06-11-08: ivars in der Klasse-Erweiterung unterstützt werden, aber nicht in den Kategorien.] Als alternative:
Auf der anderen Seite, wenn Sie nur wollen, deklarieren Sie eine Instanz-variable innerhalb der Umsetzung, nur tun Sie es:
EDIT: ist nur aufgefallen, dass Sie auch versucht zu initialisieren Instanz-Variablen in die Erklärung, die wird auch nicht unterstützt. Also:
Es hängt davon ab. Wenn die ordnungsgemäße Funktionsweise Ihrer Klasse hängt von einem anfänglichen Wert für ein ivar, dann ja.
die Synthese ist nicht mehr notwendig
Hinzufügen von Ivars eine Klasse Erweiterung unterstützt wird.
Ja, natürlich. Mein schlechtes. In der Klasse Erweiterungen, aber keine Kategorien. Bearbeitet.
InformationsquelleAutor FluffulousChimp