0

XIB ファイルを使用せずに iPhone プロジェクトを開発しました。その中で、UIView オブジェクトとそのビューのいくつかのコンポーネントを手動で作成しました。deallocメソッドとメソッドでこれらのオブジェクトを解放しviewDidUnloadます。私の問題は、UIView オブジェクトを解放するとアプリがクラッシュし、その理由がわからないことです。誰でもこの問題で私を助けることができますか?

これが私のコードです:

allmessengersview = [[UIView alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; 
allmessengersview.backgroundColor = [UIColor whiteColor];
self.view = allmessengersview;

-(void) dealloc { 
    [allmessengersview release]; 
    [super dealloc]; 
} 

- (void) viewDidUnload { 
    [super viewDidUnload];
    [allmessengersview release]; 
    allmessengersview = nil;
 }
4

2 に答える 2

0

viewDidUnload で解放しないでください。このようにして、アプリは viewDidUnload で allmessengersview を解放し、その後、dealloc で 2 回目の解放を試みますが、既に解放されているため、アプリがクラッシュします。

于 2012-05-29T07:54:06.493 に答える
0

ビューの初期化でこのコードを書き留めてください

allmessengersview=[[UIView alloc]init];
allmessengersview.frame = CGRect (0,0,320,480);
allmessengersview.backgroundColor = [UIColor whiteColor]; 
[self.view addsubView: allmessengersview];

このコードをDeallocメソッドに書き留めてください

-(void)dealloc 
{
    [allmessengersview release]; 
    [super dealloc];
}
于 2012-05-26T10:14:01.790 に答える