オブジェクトがUIView
あり、を使用してサブビューとして追加し[self.view addSubview:mySubView];
ます。その後、電話をかけ
[mySubView removeFromSuperview];
てみましたが[mySubView release];
、ここでアプリがクラッシュします。
RemoveFromSuperview
また、呼びかけrelease
ますmySubView
か?
オブジェクトがUIView
あり、を使用してサブビューとして追加し[self.view addSubview:mySubView];
ます。その後、電話をかけ
[mySubView removeFromSuperview];
てみましたが[mySubView release];
、ここでアプリがクラッシュします。
RemoveFromSuperview
また、呼びかけrelease
ますmySubView
か?
はい、removeFromSuperview
ビューを解放します。
ドキュメントを確認しましたか?約5秒かかります:
ディスカッション
受信者のスーパービューがそうでないnil
場合、スーパービューは受信者を解放します。retain
ビューを再利用する場合は、このメソッドを呼び出す前に必ずビューを再利用し、release
後で必要に応じて再度呼び出してください。
はい、スーパービューはすべてのサブビューを保持するため、ビューを削除すると、スーパービューによって解放されます。
あなたのコードを投稿してください、さもなければ答えるのは難しいです
クラッシュコード
UIView *subview = [[UIView alloc] init]; //manual allocation
[self.view addSubView:subview]; //view retained automatically
[subview release]; //released the manual allocated memory
for(UIView *subview in [scrollView subviews]) {
[subview removeFromSuperview]; //released the view retained automatically. Now retain count reach 0/
[subview release]; // crash.....
}
クラッシュのないコード
UIView *subview = [[UIView alloc] init]; //manual allocation
[self.view addSubView:subview]; //view retained automatically
[subview removeFromSuperview]; //released the view retained automatically. Now retain count reach 1
[subview release]; // No crash .retain count reach 0
明示的に割り当てたり保持したりしていないものを解放することはありません。