swift 中, Array,NSArray,NSMutableArray,[] 这些数组有什么区别

发布于 2022-09-03 00:21:31 字数 33 浏览 14 评论 0

越详细越好

1
2
3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

记忆里有你的影子 2022-09-10 00:21:31

1、NSArray和NSMutableArray是foundation框架里的,不是swift的也不是objctive-C的,swift中可以使用,是框架兼容swift语言的问题,跟框架里其他东西都用swift重写了一遍一样。
2、swift中的Array和[]是一个东西,这个是语言的东西了。
3、NSArray和NSMutableArray的区别就是后者是可变数组,可以添加和删除元素。swift的Array不存在可变不可变的问题,对象类型声明为var就是可变,let就是不可变,和swift中其他类型的变量是一个道理,没有专门搞两个类出来。
4、swift的array需要指定元素的类型,比如var arr = Array<String>();那么arr里面只能添加String对象,而NSArray/NSMutableArray则没有这种限制.这时因为swift是被设计成类型安全的,会进行类型检查。
5.var arr = Array<String>()这个尖括号的使用时模板。可以用来写模板函数,类似:

func test<T>(eme:T) -> Array<T>{
        return [eme,eme];
    }

然后使用:

let obj1 =  self.test("123")
let obj2 = self.test(UIFont.systemFontOfSize(14));

在编译期,obj1和obj2就已经是类型已知的了。

天煞孤星 2022-09-10 00:21:31

首先NSArray和NSMutableArray是Objective-C的数组类型,NSArray和NSMutableArray区别在于,NSArray是用来创建一个固定数组也就是说一旦创建就不能对进行增加,删除或者修改元素,而NSMutableArray是可变数组,用它去创建的数组对象是允许修改数组内的元素的。

Array是Swift的数组,至于[]则是可以用来创建一个Swift空数组的一种方式(不过这种用法前提是需要已知数组类型的情况下才能使用),例如:

  var shoppingList: [String] = ["Eggs", "Milk"]   //创建一个String类型的数组
  shoppingList = []  //让shoppingList变成一个String类型的空数组
  

另外Swift的数组和OC的数组是有区别的:

1.Swift数组,一个数组只能存储一种特定的元素类型,也就是说数组在定义的时候必须指明数组的类型(方法是通过显式的类型标注或类型推断。这与 Objective-C 的NSArray和NSMutableArray不同,它们一个数组可以存储多种任意类型的对象。
2.OC中数组只能存储class类型,而Swift的数组不仅能存class类型还能存储像Int这种基础类型。                           
双手揣兜 2022-09-10 00:21:31

最本质的区别应该[]是值类型,而NSMutableArray是引用类型吧。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文