2012-12-27 87 views
0

我向運行良好的簡單繪製項目的窗口添加了背景顏色,並且構建成功。然後樂趣開始了:運行時錯誤出現在控制檯窗口中。我在Apple文檔和Google上找不到任何幫助。當另一個抽獎項目發生同樣的情況時,我知道我必須尋求幫助。窗口setBackGround:導致運行時錯誤

這裏的每一次我做了一個構建&調試和制止發生了什麼 - 運行1)〜4)。 「繼續」表示我點擊了繼續圖標。它始終以不一致的順序犯錯。

1)Program received signal:「EXC_BAD_ACCESS".旋轉球。路徑OK。

繼續。 「EXC_BAD_ACCESS。旋轉的球。路徑消失。出現背景。

2)繼續,6次。 「EXC_BAD_ACCESS」。旋轉的球。路徑消失。出現背景。

3)立刻道:

2012-12-26 09:53:18.265 bezier triangle[388:a0f] -[NSCFArray stroke]: unrecognized selector sent to instance 0x1005184f0 

2012-12-26 09:53:18.268 bezier triangle[388:a0f] -[NSCFArray stroke]: unrecognized selector sent to instance 0x1005184f0 
2012-12-26 09:53:37.846 bezier triangle[388:a0f] -[NSCFArray stroke]: unrecognized selector sent to instance 0x1005184f0 
2012-12-26 09:53:37.847 bezier triangle[388:a0f] -[NSCFArray stroke]: unrecognized selector sent to instance 0x1005184f0 

沒有繼續圖標。路徑OK。沒有背景。

4)繼續,6次。 「EXC_BAD_ACCESS」。旋轉的球。沒有路徑。沒有背景。

NSWindow類在initWithRect中創建了一對Bezier路徑:並將它們繪製在drawRect:中。它運行良好。 我得到了Apple的Window Programming Guide中的setBackGround:代碼,並將其粘貼到之前爲空的AppDelegate中。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification { 
    // Background color 
    [window setOpaque:NO]; // YES by default 
    NSColor *semiTransparentBlue = 
    [NSColor colorWithDeviceRed:0.0 green:0.0 blue:1.0 alpha:0.5]; 
    [window setBackgroundColor:semiTransparentBlue];  
    window.backgroundColor = NSColor.blueColor; 
} 

設置斷點表明運行時錯誤發生在代碼完成後。

思考的問題,可能有一些做它的執行時間,我搬到這個代碼initWithRect然後進入awakeFromNib。這些都不起作用。我希望我能找到一些例子來說明如何實現這一點。所有的幫助將不勝感激。

回答

0

不,setBackground:不會導致運行時錯誤。

在路徑代碼的路徑沒有被分配和妥善inited,儘管該項目正確運行,直到的setBackground:添加代碼。奇怪!

對不起,我沒有在我的問題中附上路徑代碼,因爲它太長了。

我發現了自己的錯誤,開始一個新項目,並慢慢構建它,一次一塊。