区别:String是结构体,NSString是类
分析:
1、结构体struct是值类型,String是结构体,所以也是值类型。值类型被赋予给一个变量、常量或者被传递给一个函数的时候,其值会被拷贝。这意味着它们的实例,以及实例中所包含的值类型属性,在代码中传递的时候都会被复制。
2、类class是引用类型,NSString是类,所以也是引用类型。与值类型不同,引用类型在被赋予到一个变量、常量或者被传递到一个函数时,其值不会被拷贝。因此,引用的是已存在的实例本身。
总结:
1、NSString (class):引用类型,使用isa指针指向,分配在堆中
2、String (struct):值类型,赋值传递的值,分配在栈中
3、NSString (class)允许被继承,String (struct)不允许被继承
4、String 与 NSString 有各自对应的API,需要用到自身没有的API时可以考虑相互转换
网友评论