Was ist der Unterschied zwischen arrayWithObjects und initWithObjects?

7

Können Sie mir bitte den genauen Unterschied zwischen diesen beiden Zeilen erklären?

%Vor%     
Thukaram 19.07.2011, 08:46
quelle

3 Antworten

17

arrayWithObjects ist "Convenience-Konstruktor".

Es wird tun:

%Vor%

für Sie.

Es ist nur eine bequeme Methode, um ein automatisch freigegebenes Objekt zu erhalten, während die Lesbarkeit der Anweisung verbessert wird. Beachten Sie, dass die Tatsache, dass das Objekt automatisch freigegeben wird, eine einfache Konvention der Sprache ist (keine Regel, also könnten Sie anders machen, aber ich würde das nicht vorschlagen).

    
sergio 19.07.2011, 08:47
quelle
8

arrayWithObject gibt ein automatisch freigegebenes Array zurück, sodass Sie sich keine Sorgen darüber machen müssen, es zu veröffentlichen, wenn Sie es nicht mehr benötigen. Wenn Sie es jedoch in einer Instanzvariablen speichern, sollten Sie es beibehalten, um zu verhindern, dass der Freigabepool freigegeben wird es). initWithObject gibt ein Array mit einer Retain-Anzahl von 1 zurück, d. h. Sie besitzen das Array und müssen es irgendwann freigeben, um Speicherlecks zu vermeiden.

Vielleicht möchten Sie diesen Leitfaden lesen mehr Klarstellung.

    
Tamás 19.07.2011 08:48
quelle
2

Sie besitzen das zweite Array, aber nicht das erste.

    
JeremyP 19.07.2011 08:48
quelle