开发中,我们经常使用到[[xxx alloc] init]
,但却没有真正理解过alloc,init,现在进行深入了解一下。
alloc,init的功能
1.先看看这样的一个例子
//创建一个Person类,然后引用对应头文件
Person *p1 = [Person alloc];
Person *p2 = [p1 init];
Person *p3 = [p1 init];
NSLog(@"%p-%p", p1, &p1);
NSLog(@"%p-%p", p2, &p2);
NSLog(@"%p-%p", p3, &p3);
运行结果如图:
![](https://img.haomeiwen.com/i8715491/2f0814c752eb7928.png)
- p1,p2,p3的指向地址都相同
- p1,p2,p3的地址不同
2.alloc与init的关系如图
![](https://img.haomeiwen.com/i8715491/9deb04f1e7366352.jpg)
- alloc生成对象地址。
- init分配指针地址,并指向对象地址
alloc流程
需要看到alloc流程,可到苹果开源网站下载。
如果要将源码进行编译调试,可参见
网友评论