【发布时间】:2011-11-03 10:43:22
【问题描述】:
我已将我的应用转换为使用 ARC。
在我有以下代码行之前:
NSArray *colors = [NSArray arrayWithObjects:startColor, endColor, nil];
由于 ARC 不允许将非 Objective-C 指针类型隐式转换为“id”,因此我重写了如下行:
NSArray *colors = [NSArray arrayWithObjects:(__bridge id)startColor, (__bridge id)endColor, nil];
在模拟器上一切正常,但在设备上,应用程序在上述行崩溃并显示错误消息:
-[Not A Type retain]: message sent to deallocated instance
有什么办法解决吗?
【问题讨论】:
-
你的变量是什么类型的?周围的代码可以确定您是否需要
__bridge、__bridge_retained或__bridge_transfer -
变量类型为CGColorRef。我不确定您所说的“周围代码”是什么意思,但我已经尝试了所有 3 个版本的“__bridge”,但问题仍然存在。
-
如何创建 CGColorRef?你释放它吗?..
-
我这样创建它:
CGColorRef startColor = xColor.CGColor;其中 xColor 在父类中属于 UIColor 类型。我应该保留它吗?
标签: ios ios5 automatic-ref-counting