黑马程序员技术交流社区

标题: 今天学习了arc有些疑问 [打印本页]

作者: yolande    时间: 2016-1-1 23:12
标题: 今天学习了arc有些疑问
在arc模式下,我对自己建立的类Person 建立一个类方法 person
  1. + (instancetype)person {
  2.     return [[self alloc]init];
  3. }
复制代码


重写 delloc方法
  1. - (void)delloc {
  2.     NSLog(@"人死了");
  3. }
复制代码

然后我在main函数中 创建一个对象 Person *p = [Person person];
然后函数结束后,居然不会出现"人死了"后来发现,必须在自动释放池中才会自己释放掉这段空间.


是不是new方法 实现了神马不一样的操作...还是说它自动释放了一次?

作者: 15223245    时间: 2016-1-4 18:58
[Person new]和[[Person alloc] init] 是一样的。

前者是比较老的写法,后来苹果看new  不够用于是就出现了   [ClassName alloc] init].  

在ARC   中代码必需在   @autoreleasepool {     }中  Xcode  在编译时才会添加上内存管理的代码,  你没写在@autoreleasepool {     }中内存就不会被释放掉,也就不会执行delloc
作者: xiaoku___    时间: 2016-1-16 19:22
谢谢分享。。。
作者: 笑声不断    时间: 2016-1-16 19:25
好/////




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