2014-09-25 256 views
2

我正在進入移動應用程序開發,並已在最近調查手機遊戲。我偶然發現了Github Repo(Here)。這是一款使用SpriteKit構建的遊戲,我正在努力學習。iOS應用程序崩潰在iOS 7只使用Xcode 6.0.1 - 無法識別的選擇器發送到實例

我試圖在運行iOS 7的iPhone上使用Xcode 6.0.1構建並運行它,並且它崩潰了。它運行在運行iOS 8.我添加了一個斷點異常,試圖確定飛機失事的原因設備優良,這裏是我得到了什麼:

2014-09-25 14:23:35.813 spritybird[4470:60b] -[Scene delegate]: unrecognized selector sent to instance 0x175de140 
(lldb) 

似乎對Scene.m文件的線61破裂。

if([self.delegate respondsToSelector:@selector(eventStart)]){ // This is line 61 
    [self.delegate eventStart]; 
} 

我似乎無法理解是什麼導致它僅在iOS 7上崩潰。

任何幫助將是偉大的!謝謝。

+0

是否在此行的範圍內訪問eventStart方法? – 2014-09-25 13:44:29

+0

哪些行是第61行? – Almo 2014-09-25 13:48:05

+0

第一行是第61行。 – Jason 2014-09-25 13:57:20

回答

2

由於場景是最有可能的SKScene子類不獲得delegate財產(這是SKSceneDelegate直到iOS8上

因此,代碼是錯誤的一個實例。

要解決在這一點上

if([self respondsToSelector:@selector(delegate)]){ 
    if([self.delegate respondsToSelector:@selector(eventStart)]){ 
     [self.delegate eventStart]; 
    } 
} 

但真的你想深入代碼和工作,其中Scene來自和繼承,以確保爲eventStart似乎不是一個SpriteKit框架符號。我猜測還有一些委託協議的定製。

+0

謝謝你幫助沃倫。我已經嘗試過了,它現在好像在'ViewController.m'上斷了:'scene.delegate'被聲明爲'self'('scene.delegate = self;')。你是對的,'Scene'是一個'SKScene'子類,它在Scene.h文件中聲明。 Xcode在Scene.h文件中顯示警告:'/Users/Jason/Desktop/spritybird/Classes/Scenes/Scene.h:18:59:屬性類型'id '與類型'id '從'SKScene''繼承。有任何想法嗎? – Jason 2014-09-25 14:02:35

+0

是的 - 繼續學習東西,現在忘掉這個演示代碼上的ios7。該警告基本上說,自定義的SceneDelegate不能從SKSceneDelegate繼承。 – 2014-09-25 14:12:16

相關問題