2011-09-13 13 views
1

一時的な使用のためだけにサブビューとしてXIBを追加しています。それはフルスクリーンで、私は以下のコードが非効率的だと思います。私はここで何か間違っていることを知っている。私のサブビューでは、コンソールに奇妙なクラッシュや警告メッセージが表示されています。私は別の前にそれをテストしたので、サブビューのコードに何も問題がないことを知っています。これを行うより効率的な方法はありますか?

ここで何か問題がありますか?

self.sp = [[Score alloc] initWithNibName:@"Score" bundle:nil]; 
    [self.view addSubview:self.sp.view]; 
    [self.sp.view setFrame:CGRectMake(0, 485, 320, 480)]; 
    [self.sp.view setBackgroundColor:[UIColor clearColor]]; 
    [UIView animateWithDuration:1 
          delay:0 
         options:UIViewAnimationOptionCurveLinear 
        animations:^{ 
         [self.sp.view setCenter:self.view.center]; 
        } 
        completion:nil]; 

私の場合は「sp」のリリースと関係があると思います。どのように私はそれを適切にリリースするのですか?私はそのビューコントローラではなく、このビューでビューを閉じることです。

ありがとうございます!

答えて

1

あなたは確かにScoreのオブジェクトを漏らしています。

オブジェクトがallocinitの場合、保持カウント1のオブジェクトを返します。これは決してreleaseです。さらに、spプロパティがretainのプロパティの場合は、保持カウントを1つ増やします。さらに、releaseコールとのバランスをとる必要があります。 spを想定し

retainプロパティで、次のことを試してください。

self.sp = [[[Score alloc] initWithNibName:@"Score" bundle:nil] autorelease]; 

とあなたのdealloc方法はspをINGのもreleaseであることを確認してください。

+0

情報と回答ありがとうございます。もう1つの最後のことは、私がScoreのView Controllerから画面を却下したときですか?それは自動的に解放されますか、私は特別な何かをしなければなりませんか? –

+0

手動で表示しているので、この場合は手動で解放する必要があります。 – pgb

+0

手動でリリースするとどういう意味ですか?スコアビューで行うのは[self.view removeFromSuperView]です。しかし、私は実際にそれをリリースしていないことを知っているので、私はこの場合何をすべきですか? –

関連する問題