何らかの理由で、2 つNSImageView
の を割り当てると、大量のメモリ リークが発生します。メソッドは両方で呼び出されます
が。dealloc
NSImageView
を使用してARC
います。
とNSImageView
_
次の getter メソッドが呼び出されるとすぐに、大量のメモリが使用されます。
これは問題ありませんが、ウィンドウが閉じられているときに割り当てが解除されません...
- (NSView *)animationView {
if (!_animationView) {
_animationView = [[NSView alloc] initWithFrame:self.bounds];
self.oldCachedImageView = [[NSImageView alloc] initWithFrame:self.bounds];
[_animationView addSubview:self.oldCachedImageView];
self.oldCachedImageView.wantsLayer = YES;
self.cachedImageView = [[NSImageView alloc] initWithFrame:self.bounds];
[_animationView addSubview:self.cachedImageView];
self.cachedImageView.wantsLayer = YES;
self.animationView.wantsLayer = YES;
}
return _animationView;
}
最初の円は、上記の getter メソッドが呼び出されたときです。
2 つ目は、ウィンドウの割り当てが解除されたときです。
なしNSImageView
_
NSImageView
コメントアウトされた2つのsではありません。
- (NSView *)animationView {
if (!_animationView) {
_animationView = [[NSView alloc] initWithFrame:self.bounds];
/*
self.oldCachedImageView = [[NSImageView alloc] initWithFrame:self.bounds];
[_animationView addSubview:self.oldCachedImageView];
self.oldCachedImageView.wantsLayer = YES;
self.cachedImageView = [[NSImageView alloc] initWithFrame:self.bounds];
[_animationView addSubview:self.cachedImageView];
self.cachedImageView.wantsLayer = YES;
self.animationView.wantsLayer = YES;
*/
}
return _animationView;
}
ここにメモリリークはありません...
なぜこれが起こるのか誰にも分かりますか?