Iphone 对象泄漏:分配的对象稍后在此执行路径中未被引用,其保留计数为+;1.
当我试图重置一个表视图时,我遇到了内存泄漏,我想我可以在之前发布,但这没有帮助 我需要在这里做什么Iphone 对象泄漏:分配的对象稍后在此执行路径中未被引用,其保留计数为+;1.,iphone,objective-c,ios,cocoa-touch,Iphone,Objective C,Ios,Cocoa Touch,当我试图重置一个表视图时,我遇到了内存泄漏,我想我可以在之前发布,但这没有帮助 我需要在这里做什么 -(void) resetTable{ recordOffset = 10; rOFactor = 0; booShowMoreCell = false; self.transactionsArray = [[NSMutableArray alloc] init]; // leak here } 由于我看不到[tableView release]-调用此代码,
-(void) resetTable{
recordOffset = 10;
rOFactor = 0;
booShowMoreCell = false;
self.transactionsArray = [[NSMutableArray alloc] init]; // leak here
}
由于我看不到
[tableView release]
-调用此代码,这就是缺少的内容-在分配新的tableView之前,您不会释放它。这意味着您要添加一个保留计数,而不是先删除一个。添加版本将修复泄漏。因为我看不到[tableView release]
-调用此代码,这就是缺少的内容-在分配新的tableView之前,您不会释放tableView
。这意味着您要添加一个保留计数,而不是先删除一个。添加release
将修复漏洞。乍一看,我会说您只是用一个指向新对象的引用覆盖指针,而忘记了指向尚未释放的对象的旧引用。只要不使用ARC,就应该使用
[self.transactionsArray release]; // Be sure it was alloced before
self.transactionsArray = [[NSMutableArray alloc] init];
乍一看,我会说,你只是用一个指向新对象的引用覆盖指针,而忘记了指向一个尚未释放的对象的旧引用。只要不使用ARC,就应该使用
[self.transactionsArray release]; // Be sure it was alloced before
self.transactionsArray = [[NSMutableArray alloc] init];
假设TransactionArray是一个保留属性,您遇到的问题是NSMutableArray被保留了两次
设置保留特性时,将释放旧值,并保留新(传入)值。alloc方法还保留该对象
所以
解决此问题的最短方法是自动释放NSMutableArray:
self.transactionsArray = [[[NSMutableArray alloc] init] autorelease];
有一个方便的方法用于上述行:
self.transactionsArray = [NSMutableArray array];
假设TransactionArray是一个保留属性,您遇到的问题是NSMutableArray被保留了两次
设置保留特性时,将释放旧值,并保留新(传入)值。alloc方法还保留该对象
所以
解决此问题的最短方法是自动释放NSMutableArray:
self.transactionsArray = [[[NSMutableArray alloc] init] autorelease];
有一个方便的方法用于上述行:
self.transactionsArray = [NSMutableArray array];
TransactionArray是保留属性吗?解决方案?使用圆弧。这是未来的发展方向,我在使用它时绝对没有内存泄漏。TransactionArray是保留属性吗?解决方案?使用圆弧。这是未来的方式,我在使用它时绝对没有内存泄漏。假设该属性是保留属性,则合成setter将负责释放旧值。假设该属性是保留属性,则合成setter将负责释放旧值。