黑马程序员技术交流社区

标题: 关于对象存储 [打印本页]

作者: ximdefangzh    时间: 2015-9-20 10:36
标题: 关于对象存储
NSString* s;
s = [[NSString alloc] initWithString:@"hello world"];
这是一段最简单的字符串定义,但是看似简单,其实有很多东西可能会被忽略掉
这里的s其实是个指针,在oc中除了基本数据类型之外的变量类型都是指针类型,oc的对象也是通过指针进行操作的。
在第一段代码定义了NSString类型的指针变量,但是并没有指向任何对象,第二段代码alloc一个NSString对象 然后使s指向它,并通过s开始其的后续操作。
这里s的内存空间在栈内存中,“hello world”在堆内存中。

可以看出,oc中创建的对象指针存储在栈内存中,而alloc出来的对象的内存在堆内存中,栈内存中的指针通过赋值指向堆内存中的对象,然后通过栈内存中的指针访问对象及其变量,也就是说,其实我们在创建一个对象时其实是利用了两个部分的内存空间。
作者: 陆露    时间: 2015-9-21 17:43
貌似有点点看懂 但还不是很了解 因为我还不明白堆栈的作用 有必要 去看看





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2