ビューのプロパティとして、次のような配列の配列があります。
@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;
}
次に、initコードを次の場所に埋め込みます。
if (self.graphView.matrix == NULL) {
...
}
もう漏れはありません、ありがとう!