2016-06-01 8 views
2

Ich habe das Buch gelesen, und ich konnte in der Praxis sehen, gibt es 2 Möglichkeiten, ein Array zu setzen. Die erste ist dies:Der Weg mit Arrays in Swift?

var numElementsInSection:[Int]=[] 

, die Ihnen später eine andere Syntax für Operationen wie Entfernen von Objekten:

numElementsInSection.removeAll() 

und Sie können auch ein Array wie folgt festgelegt:

var data:NSMutableArray=[] 

und entfernen Sie Objekte mit:

data.removeAllObjects() 

Ich bin nicht sicher, was richtig ist, warum Sie die 2 haben, und die sollte ich

Antwort

5

Die erste der Swift-Version. Die zweite ist die übersetzte ObjC-Version. Es kommt darauf an. Aber die meiste Zeit möchten Sie wahrscheinlich "echten" Swift-Code verwenden, wenn Sie Swift schreiben.

2

NSMutableArray stammt von Objective-C-Typen von Apple und wird für die Interaktion mit Objective-C-Klassen und Legacy-Code verwendet.

Die neuere Swift-Syntax ist wahrscheinlich das, was Sie die meiste Zeit wollen.

+0

In den meisten Fällen können Sie mit ObjeC-Klassen interagieren, wenn Sie Swift-Arrays verwenden. – dasdom

2
  • var numElementsInSection:[Int]=[] geben Sie Instanz von Swift Array.
  • var data:NSMutableArray=[] geben Sie Instanz NSMutableArray (die Objective-C-Typ-Array ist.)

Beide sind austauschbar. Die Methoden, die Sie aufrufen, hängen jedoch davon ab, welche Art von Array vom Objekt repräsentiert wird. Daher haben Sie unterschiedliche Namen dieser Methoden.

3

Hier ist eine weitere Hauptunterschied von Swift Array vs Objective-C NSArray:

Swift Array ist ein Struct, so ist es von Wert übergeben, was bedeutet, dass jedes Objekt enthalten kopiert.

Aber NSArray sind als Klassen implementiert (überbrückt von ObjC) also sie sind als Referenzen übergeben.

+1

Nun, eigentlich ist Swift schlauer als das. Es wird nur kopiert, wenn Sie die Kopie tatsächlich ändern. Ansonsten behält es nur das Original. – KPM

Verwandte Themen