ARC探究

问题1概述

MRC环境下,[NSMutableArray array]相当于[[[NSMutableArray alloc] init] autorelease],即两者都会加入自动释放池中:
在这里插入图片描述
但是对于NSArray,两者都不会加入自动释放池:
在这里插入图片描述

问题1解答

经过试验,我发现NSString和NSMutableString的结果也不一样,猜想对于不可变对象,非alloc\new\copy\mutableCopy方法可能不相当于调用了autorelease方法,也许与浅拷贝有关:
在这里插入图片描述

证明猜想:对于浅拷贝,并没有调用autorelease方法,而是调用了copy方法

问题2

对于__autoreleasing修饰符,我发现在MRC下,其修饰的变量并未加入自动释放池:
在这里插入图片描述
而在ARC情况下,修饰的变量加入了自动释放池:
在这里插入图片描述
推测也许__autoreleasing修饰符只在ARC环境下有用

说明

以上问题都是我在看书时发现的,但是并未在网络或书上找到正确答案,故根据打印情况推测的,如有错误,敬请斧正

猜你喜欢

转载自blog.csdn.net/streamery/article/details/107452211
arc
今日推荐