NSArray与NSMutableArray的区别

一直对ios里面的NSArray,NSMutableArray内容能更改和不能更改感到模糊,网上也找不到详细的说明,思考了一下,觉得可以用java里面的知识来解决!

情况其实是这样的:NSArray创建之后会在堆中建立一块区域A,然后指针MoMo指向这块区域A,但是这块区域的大小是已经确定不能更改的了。但是我们还是能够看到有setobject的方法,可以向里面添加改变值。这是因为会在堆中在新建一个内存区域B,把原来堆内存A中的数据复制到这个堆区域B中,然后在这个新的区域B里面添加你setobject进去的值,并把栈中的指针对象MoMo指向B。这样就是说原来A的对内存值没有发生变化,但是你的指针MoMo在指向新的内存区域B之后指针对应的值已经变化了。因为B中有A的复制内容,还有最后你新添加进去(setobject)的值。

时间: 2024-10-10 06:02:13

NSArray与NSMutableArray的区别的相关文章

NSArray 和NSMutableArray的区别

1.NSArray 创建的是静态数组,一旦创建之后,就再也不能添加和删除数组中的对象了. NSArray * array; array = [ NSArray arraryWithObjects: @"one", @"two", @"three",nil     ] ; 2.NSMutalbeArray 创建的是动态数组,可随意添加或删除数组中的元素. 在iOS 开发过程中, NSArray,NSMutableArray.NSDictionary

Objective-C数组 NSArray与NSMutableArray的区别 NSDictionary与 NSMutableDictionary 的区别 == int,NSInteger,NSUIn

Objective-C数组相关操作. // insert code here... NSLog(@"数组"); //指定多个字符串创建数组 NSArray *array; array=[NSArrayarrayWithObjects:@"0-asd",@"1-fds",@"2-哈咯",@"3-个人",nil]; //数组的长度 NSLog(@"数组长度%d",array.count);

NSArray与NSMutableArray 数组与可变数组的创建和遍历 复习

1.NSArray 是一个父类,NSMUtableArray是其子类,他们构成了OC的数组. 2.NSArray的创建 NSArray * array = [[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"four good",nil];//用对象初始化一个数组,这里是任意四个对象,不一定是字符串.//OC中的数组,不是真正的数组,这是一个链表,nil的作用正是表

NSArray,NSMutableArray的一些常用方法

不可变数组 --NSArray 常用的初始化一个数组:       NSArray *array1 = [[NSArray alloc] init];       NSArray *array2 = [NSArray array]; //对于上述两个方法,在NSArray中用的很少,因为这是一个空数组,它的值是不可改变的,意味着一旦创建,就永远为空       NSArray *array3 = [NSArray arrayWithObjects:[NSNumber numberWithInt:

Foundation框架中NSArray和NSMutableArray

=================== NSArray ====================(不可变数组,一旦建立就不能被更改) Ordered collection of objects. Immutable(you cannot add or remove objects to it once it’s created)Important methods:+ (id)arrayWithObjects:(id)firstObject, ...;    // nil terminated -

[Objective-C] 008_Foundation框架之NSArray与NSMutableArray

在Cocoa Foundation中NSArray和NSMutableArray 用于对象有序集合,NSArray和NSMutableArray类最大的区别是:NSArray是不可变,NSMutableArray是可变的.它们只能存储Cocoa对象(NSObject对象),如果想保存一些原始的C数据(如:int,float,double,BOOL等),则需要将这些原始的C数据封装NSNumber类型,它们的下标是从0开始,下面是NSArray和NSMutableArray类的一些常用初级操作.

Objective-C 下用 NSArray 和 NSMutableArray 定义二维数组跟多维数

Objective-C 下用 NSArray 和 NSMutableArray 定义二维数组跟多维数组 目录 问题描述 Objective-C 中的数组对像 NSArray 和 NSMutableArray 简介 二维数组:嵌套两次的 NSMutableArray 多维数组:嵌套多次的 NSMutableArray 问题描述 说实话,不太习惯面向对象编程,所以在操作 Objective-C 中数组对象时,总是忍不住跟 C 中的数组做比较,正好要建立一个二维数组,需要根据二维数组的下标来做相应的设

OC中的NSArray和NSMutableArray、NSDictionary和NSMutableDictionary用法

一:NSArray 和NSMutableArray 1: NSArray:不可变数组 NSArray是OC中使用的数组,只能用来存放OC对象,不能存放非OC对象如基本数据类型 它使不可变的,一旦初始化完毕,内容不能改变,也不能添加元素. 而C语言中的数组只能存放一种数据类型 (1) 普通数组的用法 // 普通数组的创建 // int arr[5] = {1,3,4}; // 对象数组的创建 // Person *p = [[Person alloc] init]; // Person *arrP

NSArray和NSMutableArray相互转换, 以及常用方法-备

有时候项目中NSArray和NSMutableArray需要相互转化,下面给出相关代码1.NSArray 1.1 转化:NSMutableArray 1 NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array]; // array为NSMutableArray类型 1.2 常用方法 不可变数组对象: [array count] : 得到这个对象数组的长度. [array objectAtIndex 0]: 传入数组脚