在我转换为 ARC 之前,以下代码一直有效。它现在失败了,因为 vcObj 在该行执行后包含一个 nil。
[[self vcPhoto] setVcObj: [NSClassFromString( [[self vcPhoto] vcClassName] ) new]];
我已经尝试过,如果我像这样更改代码,它会再次工作,并且对象 x 按预期分配给 vcObj:
id x = [NSClassFromString( [[self vcPhoto] vcClassName] ) new]];
[[self vcPhoto] setVcObj: x];
在我看来,该类生成自:
[NSClassFromString( [[self vcPhoto] vcClassName] ) new]
在分配给 vcObj 之前立即蒸发。
我已经阅读了“过渡到 ARC 发行说明”,尤其是关于变量限定符的部分,但我看不到如何标记中间体,因此它会一直存在,直到它被消耗掉。