ARC探究

文章目录

  • 问题1概述
  • 问题1解答
  • 问题2
  • 说明

问题1概述

MRC环境下,[NSMutableArray array]相当于[[[NSMutableArray alloc] init] autorelease],即两者都会加入自动释放池中:
ARC探究_第1张图片
但是对于NSArray,两者都不会加入自动释放池:
ARC探究_第2张图片

问题1解答

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

问题2

对于__autoreleasing修饰符,我发现在MRC下,其修饰的变量并未加入自动释放池:
ARC探究_第4张图片
而在ARC情况下,修饰的变量加入了自动释放池:
ARC探究_第5张图片
推测也许__autoreleasing修饰符只在ARC环境下有用

说明

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

你可能感兴趣的:(iOS)