黑马程序员技术交流社区
标题: Student *stu = [Student alloc];求详解 [打印本页]
作者: Littlekin 时间: 2014-6-16 16:12
标题: Student *stu = [Student alloc];求详解
本帖最后由 Littlekin 于 2014-6-17 23:44 编辑
#import <Foundation/Foundation.h>
#import "Student.h"
int main(int argc, const char * argv[])
{
@autoreleasepool {
Student *stu = [Student alloc]; //给对象分配内存
stu = [stu init]; //这句话相当于java的new实例化,可以理解
[stu release];
}
return 0;
}
问题:Student *stu = [Student alloc];根据指针知识,这句话是不是返回一个内存地址啊,就跟
int a; int *p = &a;这样啊,[Student alloc]这个方法返回的是一个对象,然后Student *stu = &对象; 这个意思啊?求大神解答。
作者: huangqiwa 时间: 2014-6-16 17:27
也可以这样理解!
作者: liulinjie 时间: 2014-6-16 18:04
alloc 方法返回的不是对象, 而是 id 类型的变量, 它可以指向任何类型的对象, 它本身是个对象指针. 所以我觉得 [Student alloc] 应该是分配了一块存储空间给一个Student对象, 并返回一个id指针, 然后把这个指针的值 (即Student对象的地址) 赋给了stu.
作者: 陈超众 时间: 2014-6-16 20:42
学习中 啊
作者: m573555543 时间: 2014-6-16 23:11
我们先来说说原先如何创建对象
[Person new]
这个里面的new 包含了alloc 和 init 这两个
但为什么不用new 而很麻烦的用alloc 和init 呢。
这是因为 new 他的初始化是固定死的,默认值是0;
而【[ Person alloc】init】中init 她可以重写,可以改变初始化的值。
alloc 他的含义是分配存储空间给对象,他在NSObject中定义是 + (id)alloc
而id 是万能指针,相当于NSObject * ,他可以指向/操作任何oc对象
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |