#前提:使用了ARC
@autoreleasepool
{
````
},这个池还是要添上,对象初始化时封装了autorelease方法
- #import <Foundation/Foundation.h>
- #import "Person.h"
- int main(int argc, const char * argv[])
- {
- @autoreleasepool {
-
- // 对象创建在池内的情况
- Person *p = [[Person alloc] init];
- p = nil; // 如果这句写上,则这句执行之后对象就被释放了(没有了强指针);如果不写,则在执行18之后释放对象
- NSLog(@"abc");
- } // (如果 前面 p = nil没写)则对象要在执行当前行之后释放,因为使用ARC,他封装了autorelease(也只能在有池情况下使用有效)
-
-
- // 对象创建在池外
- Person *p1 = [[Person alloc] init];
- p1 = nil; // 如果这句写上,则这句执行之后对象就被释放了(没有了强指针),如果不写,则要在main函数执行完后释放对象(原因:main函数执行后局部变量消失,即对象没有强指针了,即p1不存在了)
- NSLog(@"456");
- return 0;
- }
复制代码 |