如标题所示,Array vs NSArray vs [AnyObject]有什么区别?

另外,最推荐的解决方法。我的意思是建议,最简单的实现是什么。谢谢。

最佳答案

Array是一个结构,因此它是Swift中的值类型。
NSArray是一个不变的Objective C类,因此它是Swift中的引用类型,并桥接到Array<AnyObject>
NSMutableArrayNSArray的可变子类。

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)


印刷品:

(
    Pencil,
    Eraser,
    Pen
)
[Pencil, Eraser, Notebook]


因为foo更改a的局部值,而bar更改引用。
如果您使用let arr代替其他参考类型的var,它也将起作用。

10-08 00:09