在Swift中:数组与NSArray之间的差异VS [AnyObject] [英] in Swift: Difference between Array VS NSArray VS [AnyObject]

查看:322
本文介绍了在Swift中:数组与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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆