2016-12-07 117 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您應該將該評論添加到您的答案,因爲它看起來像你解決了它。 –