黑马程序员技术交流社区

标题: 关于@autorelease 和ARC的问题 [打印本页]

作者: 香草芭芙    时间: 2015-5-14 10:08
标题: 关于@autorelease 和ARC的问题
当关闭ARC的时候
  1. #import <Foundation/Foundation.h>
  2. #import "Person.h"
  3. int main(int argc, const char * argv[]) {

  4.         Person * p1 = [[[Person alloc] init] autorelease];

  5.         p1.age = 10; //对象没有释放.
  6.         @autoreleasepool {
  7.                 Person * p2 = [[[Person alloc] init] autorelease];

  8.                 p2.age = 20; //对象释放.
  9.         }
  10.         //疑问: autorelease 必须配合 autoreleasepool 使用吗? 而且还有@autoreleasepool的嵌套使用, 这怎么掌握 T.T

  11.         //把所有代码都写在@autoreleasepool里面 这样做对吗? 会有什么安全隐患?

  12.         return 0;
  13. }
复制代码


作者: 天是蓝色的    时间: 2015-5-14 10:15
必须得相互配合:autorelease 必须配合 autoreleasepool,可以嵌套使用!就知道这么多
作者: cogddo    时间: 2015-5-14 16:48
autorelease 必须配合 autoreleasepool 使用,嵌套就跟{}代码块中局部变量作用域类似的,真正开发IOS时,你是不会把所有都写到main函数的,也就是不会都写到autoreleasepool中




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