iOS 7上UIView的调试和发布模式之间的差异

时间:2014-04-03 01:28:41

标签: ios iphone objective-c uiview core-graphics

我有这段代码

CGFloat dashArray[] = {5,2};
CGContextSetLineDash(context, 3, dashArray, 4);
CGMutablePathRef path = [self newArcPathAtPoint:point withRadius:radius startAngle:startAngle endAngle:endAngle];
[color setStroke];
CGContextAddPath(context, path);
CGContextStrokePath(context);
CGPathRelease(path);

它在'Debug'上给我这个:

Drawing in Debug mode

这就是'发布':

Drawing in Release mode

我不知道如何开始调试这个。任何人都可以帮我解决这个问题或给我尝试调试的想法吗?

2 个答案:

答案 0 :(得分:5)

所以我终于找到了问题所在。这条线就是问题:

CGFloat dashArray[] = {5,2};
CGContextSetLineDash(context, 3, dashArray, 4);

我开始收到以下错误消息:

CGContextSetLineDash: invalid dash array: negative lengths are not allowed.

在进一步调查中,我发现需要修复我发送给CGContextSetLineDash的参数。以下工作:

CGFloat dashArray[] = {5,2};
CGContextSetLineDash(context, 0, dashArray, 2);

错误的代码虽然在调试模式下工作,但这导致了对错误的混淆。希望这可以帮助将来的某个人。

答案 1 :(得分:1)

我知道这是一个古老的问题,但我遇到了同样的问题,几乎要拔掉我的头发了。我尝试了我能在这里找到的所有答案。但对我来说解决同样问题的方法是:

  • 在项目的“构建设置”中,转到Opimization级别。将其从Fast,minimum更改为None以解决我的问题。

似乎在这个阶段发生的事情正在影响虚线的绘制方式。

希望这可以帮助其他人解决这个问题。