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

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"
}

foo(barr)
bar(arr)

println (arr)
println (barr)

Prints:

(
    Pencil,
    Eraser,
    Pen
)
[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.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)