我在视图中有一个属性,这样的数组数组:
@interface MyView : UIView
@property (nonatomic) CGPoint **matrix;
@end
在拥有此视图的控制器中,我已在 -viewDidLoad 中加载数据并在 -viewDidUnload 中释放内存,如下所示:
- (void)viewDidLoad
{
self.myView.matrix = malloc(sizeof(CGPoint*) * array1Size);
for (int k = 0; k < array1Size; k++) {
self.myView.matrix[k] = malloc(sizeof(CGPoint) * innerArraySize);
}
}
- (void)viewDidUnload
{
for (int k = 0; k < array1Size; k++) {
free(self.myView.matrix[k]);
self.myView.matrix[k] = nil;
}
free(self.myView.matrix);
self.myView.matrix = nil;
[self setMyView:nil];
[super viewDidUnload];
}
在分析时,我在这里看到了泄漏。有人可以帮我在哪里错吗?
谢谢
更新:
我尝试从 viewDidUnload 中删除免费代码并像这样使用 dealloc:
-(void)dealloc {
[self freeArray];
}
- (void) freeArray {
for (int k = 0; k < 5; k++) {
free(self.myView.matrix[k]);
self.myView.matrix[k] = NULL;
}
free(self.myView.matrix);
self.myView.matrix = NULL;
}
然后我将初始化代码嵌入:
if (self.graphView.matrix == NULL) {
...
}
现在不再泄漏,谢谢!