我的以下代码是否包含内存泄漏?
请在这里帮助我!

NSMutableArray *arrInfo =  [[NSMutableArray alloc] init];
appDelegate.arrAppInfo = arrInfo;
[arrInfo release];

最佳答案

如果将arrAppInfo属性声明为保留(或强大)属性,则您所做的操作在非ARC环境中完全有效。实际上,ARC在类似情况下所做的只是在检测到在当前作用域中不再使用arrInfo属性时才发布一个版本。

要深入:

NSMutableArray *arrInfo =  [[NSMutableArray alloc] init]; //arrInfo retain count = 1
appDelegate.arrAppInfo = arrInfo; //arrInfo retain count = 2
[arrInfo release]; //arrInfo retain count = 1


如果在将arrInfo变量分配给保留属性后没有释放它,则将来在重新分配或释放arrAppInfo属性时会导致内存泄漏,因为其保留计数不会为0。

10-04 14:15