autoreleasepool中第一个用工厂方法创建的对象会在最后被释放?
初学者,一直没搞懂ARC模式下autoreleasepool对象释放的问题,后来发现autoreleasepool中第一个用工厂方法创建的对象会在最后被释放,不知道是不是这样?还是我哪里搞错了?所以。。为什么会出现这样的输出呢?
似乎只有第一个autoreleasepool会这样,后面的包括嵌套的autoreleasepool都不会出现这个问题。
代码如下,NSMutableArray和NSMutableDictionary都重写了dealloc方法。
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSMutableDictionary *dict=[NSMutableDictionary dictionaryWithCapacity:10];
NSMutableArray *array1=[NSMutableArray arrayWithCapacity:10];
NSMutableArray *array2=[NSMutableArray arrayWithCapacity:10];
__unused NSMutableArray *array3=[NSMutableArray arrayWithCapacity:10];
dict = nil;
array1 = nil;
NSLog(@"------------");
array2 = nil;
NSLog(@"continue......");
}
NSLog(@"After AutoReleasePool");
return 0;
}
输出结果:
2016-03-03 22:44:25.452 ARC[13973:3216802] NSMutableArray released
2016-03-03 22:44:25.453 ARC[13973:3216802] ------------
2016-03-03 22:44:25.453 ARC[13973:3216802] NSMutableArray released
2016-03-03 22:44:25.453 ARC[13973:3216802] continue......
2016-03-03 22:44:25.454 ARC[13973:3216802] NSMutableArray released
2016-03-03 22:44:25.454 ARC[13973:3216802] NSMutableDictionary released
2016-03-03 22:44:25.454 ARC[13973:3216802] After AutoReleasePool
Program ended with exit code: 0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
NSMutableArray和NSMutableDictionary的 dealloc 方法可以重写?表示不会.