2012-05-08 9 views
2

ARCを有効にしたiPhoneアプリを開発するためにXcode 4.3.2を使用しています。プロジェクトでのナビゲート中にクラッシュはありませんが、漏れツールを使用してプロジェクトの実行を見たときに、mallocが漏れている可能性があります。テーマは、データをロードしながら、別のビューでビューを隠すにある.....他のビューに別のビューを表示するアクティビティインジケータを追加中にメモリリークが発生する

[NSThread detachNewThreadSelector: @selector(StartActivityIndicator) toTarget:self withObject:nil]; 



-(void)StartActivityIndicator 
{ 
    hideView= [[UIView alloc] initWithFrame: CGRectMake(0,0,320,480)]; 
    activityIndicator= [[UIActivityIndicatorView alloc] initWithFrame: CGRectMake(148,188, 24, 24)]; 
    hideView.backgroundColor =[UIColor blackColor]; 
    hideView.alpha=0.8; 
    [hideView addSubview:activityIndicator]; 
    [self.view addSubview:hideView]; 
    [activityIndicator startAnimating]; 

} 

この中に任意のエラーまたはこのコーディングへの代替があります。..

そして、ARCが有効になっているときに我々がする必要はあり漏れの世話をするかどうか.....

答えて

1

あなたはアニメーションの活動の指標を表示するためにスレッドを使用する必要はありません。代わりに、単にスレッドを使用

[self StartActivityIndicator]; 

を使用

[NSThread detachNewThreadSelector: @selector(StartActivityIndicator) toTarget:self withObject:nil]; 

の簡単メインスレッド外UI関連クラス及びメソッドにアクセスすることにより、又は非アトミックとして宣言されたセッターを使用して、例えば、問題につながる可能性、またはautoreleasepoolを追加するのを忘れて、など。あなたがしなければならない限り、そこに行かないでください。また、必要ならば、独自のスレッドを作成する代わりに、大規模なセントラルディスパッチを使用する必要があります。 :)

1

ARCを使用してあなたがあなたのコードを配置する必要があります。

** @ autoreleasepool {

} **

-(void)StartActivityIndicator { 
@autoreleasepool { 
    hideView= [[UIView alloc] initWithFrame: CGRectMake(0,0,320,480)]; 
    activityIndicator= [[UIActivityIndicatorView alloc] initWithFrame: CGRectMake(148,188, 24, 24)]; 
    hideView.backgroundColor =[UIColor blackColor]; hideView.alpha=0.8; 
    [hideView addSubview:activityIndicator]; 
    [self.view addSubview:hideView]; 
    [activityIndicator startAnimating]; 
    } 
} 
+0

私はEXC_BAD_ACCESSクラッシュ –

+0

コードがクラッシュしていますか? – samfisher

+0

サンプルアプリケーションでこのコードを試しました。それは私のためにうまくいっている.. .. !! – samfisher

関連する問題