我的以下代码是否包含内存泄漏?
请在这里帮助我!
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。