shle2821 shle2821 - 11 months ago 314
Swift Question

in Swift: Difference between Array VS NSArray VS [AnyObject]

As the title says, what's the difference between Array vs NSArray vs [AnyObject]?

Also, what is most recommended way of approaching this. What i mean recommended is, what's the easiest implementation. Thank you.

Answer Source

Array is a struct, therefore it is a value type in Swift. NSArray is an immutable Objective C class, therefore it is a reference type in Swift and it is bridged to Array<AnyObject>. NSMutableArray is the mutable subclass of NSArray.

var arr : NSMutableArray = ["Pencil", "Eraser", "Notebook"]
var barr = ["Pencil", "Eraser", "Notebook"]

func foo (var a : Array<String>)
    a[2] = "Pen"

func bar (a : NSMutableArray)
    a[2] = "Pen"


println (arr)
println (barr)


[Pencil, Eraser, Notebook]

Because foo changes the local value of a and bar changes the reference. It will also work if you do let arr instead of var as with other reference types.