2016-12-07 77 views
0

我想绘制一个贝塞尔曲线可可,我得到一个EXC_BAD_INSTRUCTION似乎没有任何意义。addCurveToPoint崩溃与EXC_BAD_INSTRUCTION

这里是我的代码:

NSBezierPath *path = [NSBezierPath bezierPath]; 
[path setLineWidth: 1.0f]; 

NSPoint a = NSMakePoint(0, 0); 
NSPoint c1 = NSMakePoint(0, 50); 
NSPoint c2 = NSMakePoint(50, 100); 
NSPoint b = NSMakePoint(100, 100); 

[path moveToPoint:a]; 
[path addCurveToPoint: b controlPoint1:c1 controlPoint2:c2]; 

[[NSColor colorWithDeviceRed:1 green:0 blue:0 alpha:1] set]; 

[path stroke]; 

我的应用程序崩溃时,执行以下行:

[path addCurveToPoint: b controlPoin1:c1 controlPoint2:c2]; 

而且Xcode的告诉我崩溃在我的主循环:

[NSApp runModalSession:modalSession]; 

错误输出如下:

2016-12-08 04:38:35.344601 unit_tests[10606:777278] -[NSBezierPath addCurveToPoint:controlPoint1:controlPoint2:]: unrecognized selector sent to instance 0x100428fa0 

(LLDB)

+1

我强烈怀疑调用堆栈是 “完全无用”:它张贴,让潜在的帮助决定呢? –

+0

编辑了这个问题,以包含输出 – megamau

+0

这不是一个堆栈跟踪,但是,这是一条线。剩下的痕迹在哪里? –

回答

0

您有controlPoin1: c1一个错字应该controlPoint1: c1

其实我刚认识你的目标了AppKit(NSBezierPath)不UIKit的(UIBezierPath)。

编辑:

对于AppKit的使用:-[NSBezierPath curveToPoint: controlPoint1: controlPoint2:]

对于UIKit中使用-[UIBezierPath addCurveToPoint: controlPoint1: controlPoint2:]

+0

是的,没错,我正在使用NSBezierPath。修正了错字,但结果相同。 – megamau

+0

这些方法是 - [UIBezierPath addCurveToPoint:controlPoint1:controlPoint2:]和 - [NSBezierPath curveToPoint:controlPoint1:controlPoint2:] – DDP

+0

@DDP您应该将该评论添加到您的答案,因为它看起来像你解决了它。 –