我开发了一个应用程序,现在我使用仪器来查看内存使用情况。我在理解对象的保留/释放过程时遇到问题。这是仪器说什么:iOS - 内存和保留/释放问题
http://f.cl.ly/items/1Y2Z1e2K3e3Y3e1I1z26/Schermata%202012-12-19%20alle%2011.18.51.png
保留计数增加,当添加我的对象到一个数组,当我将其添加在我看来,当我从阵列中起飞。 因此,当我使用removeFromSuperview
时,对象retainCount
将永远不会为零,因此对象不会释放内存。编辑1: 我忘了说我正在使用ARC。
编辑2: 我描述正是发生: 我在一个叫NKLevelGenerator
类一起创建对象的其他对象。进入它,我分配NKIngredient
s,然后我将全部添加到将返回的NSArray
。这里的每一个对象的保留数为2。在我NKLevelVC
,我ViewController
,我用这个指令:
[level addObjectsFromArray:[levelGenerator level1WithDelegate:self ciotola:ciotola bagliore:bagliore difficulty:NKDifficultyHard]];
对象level
是NSMutableArray
我alloc
和viewDidLoad
init
。 在这里,我呼吁执行此操作的另一种方法:
- (void)insertInArrayRandomly {
for (int i=0; i<[level count]; i++) {
[ingredienti insertObject:[level objectAtIndex:[[indexes objectAtIndex:i]integerValue]] atIndex:i];
}
}
对象ingredienti
是另一个NSMutableArray
我alloc
和viewDidLoad
init
。 indexes
是一个NSInteger
的数组,其中包含随机索引以随机提取NKIngredient
对象。 那么我这样做:
NKIngredient *ing = [ingredienti objectAtIndex:index];
[[self view] insertSubview:ing belowSubview:navBar];
[ing animateIngredient];
[ingredienti removeObject:ing];
以下是图像:http://f.cl.ly/items/1Y2Z1e2K3e3Y3e1I1z26/Schermata%202012-12-19%20alle%2011.18.51。png –