0

現在、XCode4.2でIOSアプリケーションを開発しています。アプリケーションの実行時に UIButton を作成します。私のコーディングはここにあります:

- (IBAction)btnSync_Click:(id)sender {
    float j=10.0;
    for(int i=1;i<5;i++){
        UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        button.frame = CGRectMake(j, 170, 100.0, 50.0);
        [button setTitle:[NSString stringWithFormat:@"btn%d",i] forState:UIControlStateNormal];
        [button addTarget:self action:@selector(btn_Click:) forControlEvents:UIControlEventTouchUpInside];
        [fra_btn addSubview:button];
        j=j+110;
    }
}

- (IBAction)btn_Click:(id)sender{
    UIButton *btntmp=(UIButton*)sender;
    NSLog(btntmp.titleLabel.text);
}

fra_btn(View) 内のすべてのボタンを解放する必要があることを知りたいですか? はいの場合、どうすればよいですか?私のプロジェクトはARCプロジェクトです。

ベストRgds、DF

4

5 に答える 5

4

いいえ、このボタンや、ARCでプログラムで作成されたCocoaTouchフレームワークの他のオブジェクトを離す必要はありません。

于 2012-10-19T08:53:12.227 に答える
1

allocを使用しないため、ボタンの初期化にInitを使用すると、何も解放する必要はありません。

于 2012-10-19T08:53:34.847 に答える
0

alloc を使用していないため、作成したボタンを離すことはできません。そのため、メモリが割り当てられませんでした。これが役立つことを願っています。

于 2013-01-24T07:28:33.580 に答える
0

ウルボリンの答えに加えて:

initnew、 またはで始まるメソッドのみcopyがオブジェクトの所有者であると見なされるメソッドのみ、したがって、上記の 3 つのキーワードで始まるメソッドで取得したオブジェクトのみを解放する必要があります。他のすべてのメソッドは自動解放する必要があります。(このルールを無視するお粗末なプログラマーがいる可能性がありますが、Apple はお粗末ではないので、これを安全に Cocoa クラスに適用できます。)

これは (おそらく「明らかに」) にも適用されallocます。copynew

しかし、Tomasz Wojtkowiak は正しい。ARC はAutomatic Reference Countingですので、何もリリースする必要はありません。

于 2012-10-19T09:04:49.337 に答える
0

ただし、ARCではリリースは控えられているため、iVarをリリースすることは問題ありません。また、質問によると、ここでUIButtonはalloc、initを使用して割り当てられていません。これの同様の例は、文字列say[NSString stringWithFormat:@""];または[NSArray arrayWithObjects];autoReleaseを割り当てる場合です。明示的に解放それらはその行でアプリをクラッシュさせます

于 2012-10-19T09:13:52.543 に答える