在Swift中:数组与NSArray之间的差异VS [AnyObject] [英] in Swift: Difference between Array VS NSArray VS [AnyObject]
问题描述
正如标题所说,Array和NSArray与[AnyObject]之间有什么区别?
此外,最近推荐的方法是。我的意思是建议,是什么是最简单的实现。谢谢。
Array
strong>,因此它是Swift中的值类型。
NSArray
是不可变的Objective C 类,因此它是Swift中的引用类型桥接到 Array< AnyObject>
。
NSMutableArray
是 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)
列印:
(
铅笔,
橡皮擦,
笔
)
,Eraser,Notebook]
因为 foo
更改 a
和 bar
的局部值更改引用。
如果你和其他引用类型一样 let arr
而不是 var
p>
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.
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.
这篇关于在Swift中:数组与NSArray之间的差异VS [AnyObject]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!