我已将我的应用转换为使用ARC.
在我有以下代码行之前:
NSArray *colors = [NSArray arrayWithObjects:startColor, endColor, nil];
Run Code Online (Sandbox Code Playgroud)
由于ARC不允许将非Objective-C指针类型隐式转换为'id',所以我重写了这样的行:
NSArray *colors = [NSArray arrayWithObjects:(__bridge id)startColor, (__bridge id)endColor, nil];
Run Code Online (Sandbox Code Playgroud)
一切都在模拟器上正常工作,但是在设备上,应用程序在提到的行上崩溃并显示错误消息:
-[Not A Type retain]: message sent to deallocated instance
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决?
我的代码崩溃了,当我通过2个CGColorRefs时,我一直跟踪到一线崩溃.这是对象:
CGColorRef startColor = [[UIColor colorWithWhite:0.92 alpha:1.0]CGColor];
CGColorRef endColor = [[UIColor colorWithWhite:0.94 alpha:1.0]CGColor];
NSLog(@"start: %@ end: %@", startColor, endColor);
Run Code Online (Sandbox Code Playgroud)
NSLog返回崩溃.他们怎么了?
编辑 - 崩溃的地方:
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGFloat locations[] = { 0.0, 1.0 };
NSArray *colors = [NSArray arrayWithObjects:(__bridge_transfer id)startColor, (__bridge_transfer id)endColor, nil];
Run Code Online (Sandbox Code Playgroud)