0

XCode4.2にロードされた次の「古い」コードは機能します。

しかし、「新しいプロジェクト」を開始してコードを「カットアンドペースト」すると、エラーが発生します。「int」から「UILabel*」へのキャストはARCでは許可されていません。

「ビルド設定」に設定が必要な設定があると思いますが…どうすればいいですか?

ありがとう...

(はい、私は意図的にこれを実行したいので、変換するには古いコードが多すぎます!)

int mice[10];

for (int z=0; z<10; z++) {
    UILabel *b = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
    mice[z] = (int)b;
}

for (int zz=0; zz<10; zz++) {
    //Old project loaded into XCode 4.2 will work fine with this
    UILabel *c = (UILabel*) mice[zz];// New project: fails <---------- Cast of 'int' to 'UILabel*' is disallowed with ARC


    [self.view addSubview:c]; 
}
4

2 に答える 2

3

未定義の動作があるため、このようなキャストは避けてください。UILabel代わりにsの配列を作成してください。

于 2012-05-06T03:44:16.633 に答える
0

わお。不快感はありませんが、なぜnsmutablearrayではないのでしょうか。少なくとも、ベースオブジェクトはidであるため、uilabelへのキャストは機能します。

アークをオンにして実行できるかどうかはわかりません。この種のコードを引き続き使用する場合は、無効にすることをお勧めします。

于 2012-05-06T05:06:27.097 に答える