3時間ほど後、私は最終的にView Controllerでメモリリークを修正することができました。リークは、そのプロパティがヘッダーファイルで '保持'に設定されているUIPickerViewによって引き起こされました。Objective-Cのメモリ管理 - これはすべて間違っていると確信しています
次のコードは、それを修正するために管理:
- (void)viewDidLoad {
[super viewDidLoad];
myPicker = [[[UIPickerView alloc] initWithFrame:CGRectZero]autorelease];
}
- (void)dealloc {
[super dealloc];
[myPicker release];
myPicker = nil;
}
私はそれが悪いことを知っている...このコードがどのように衝撃的な私に教えないでください。私は、リリース、と autoreleaseを持っています。問題は、上記のいずれかの部分を変更または削除すると、メモリリークが返されることです。
私はない、明らかに、どのように客観的Cのメモリ管理の仕組みを知っていたのに、私は...
はなぜ上記のコードは、メモリリークを修正し、どのようなコードを見て、正しいバージョンのかもしれませんか?
-
EDIT:誰もが同じ問題を抱えている、または関心がある場合
- 問題は、私のクラス内の他のオブジェクトの一つが「維持」ではなくに設定したことを「割り当てます' (オブジェクトを所有していない場合は、保持ではなくプロパティの割り当てが必要です。
Cannondaleのように、余分な保持を削除するとすべてが修正され、リリースは1つだけ必要です。
あなたの声を聞いてうれしいです。ニース1 :) – RedBlueThing
これは助けるかもしれません:http://interfacelab.com/objective-c-memory-management-for-lazy-people/ – hlfcoding