0

以下加载到 XCode 4.2 中的“旧”代码将起作用。

但是,如果我开始一个“新项目”并“剪切并粘贴”代码,我会得到错误:ARC 不允许将 'int' 转换为 'UILabel*'

我假设我需要设置“构建设置”中的一个设置......我该怎么办?

谢谢...

(是的,我故意这样做,太多旧代码要转换!)

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?至少然后转换为 uilabel 是有效的,因为基础对象是 id。

不确定您是否能够在开启电弧的情况下进行操作。如果您想继续使用这种代码,建议您禁用它。

于 2012-05-06T05:06:27.097 回答