本网页所有文字内容由 imapbox邮箱云存储,邮箱网盘, iurlBox网页地址收藏管理器 下载并得到。
ImapBox 邮箱网盘 工具地址: https://www.imapbox.com/download/ImapBox.5.5.1_Build20141205_CHS_Bit32.exe
PC6下载站地址:PC6下载站分流下载
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox 网页视频 工具地址: https://www.imapbox.com/download/ImovieBox4.7.0_Build20141115_CHS.exe
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
Objective-C的数组比C++,Java的数组强大在于,NSArray保存的对象可以是不同的对象。但只能保存对象,int ,char,double等基本数据类型不能直接保存,需要通过转换成对象才能加入数组。 那么,OC是如何做到保存不同的对象的呢?NSMutableArray继承自NSArray,他又是如何进行插入和删除操作的呢?如何保存的是对象本身,是链式存储还是顺序存储?如果是顺序存储,那么插入和删除操作岂不是很麻烦? 首先,NSArray保存的是对象的指针,而非对象本身。这样的话,NSArray就可以保存不同的对象的指针;这样对话,NSMutableArray进行插入和删除操作也不会太麻烦(毕竟指针占用的空间小);那么NSArray是如何存储的呢?
Student *stu = [[Student alloc] init]; Student *stu1 = [[Student alloc] init]; Student *stu2 = [[Student alloc] init]; Student *stu3 = [[Student alloc] init]; NSArray *arr = @[stu,stu1,stu2,stu3]; NSLog(@"/narr1 is %p/narr2 is %p/narr3 is %p/narr4 is %p",[arr objectAtIndex:0],[arr objectAtIndex:1],[arr objectAtIndex:2],[arr objectAtIndex:3]); 运行结果如下图: 看到这里,我顿时凌乱里,这也不连续啊?这里打印的其实是里面元素的地址。
view of memory "arr"得到: 第一个地址0x 01 00 30 01 10是NSArray中isa指针 第二个地址0x 01 00 11 0a 60 是arr4的地址 第三个地址0x 01 00 20 00 10 是arr3的地址 …… 好了,到这里为止,我们知道了nsarray的内存布局:顺序存储对象的指针
阅读和此文章类似的: 程序员专区