3 个回答

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就已经是类型已知的了。

评论 赞赏

    首先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这种基础类型。                           
    评论 赞赏
      LucasDang
      • 2
      • 新人请关照

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

      评论 赞赏
        撰写回答

        登录后参与交流、获取后续更新提醒