呀,所以這一塊通過我還是一會兒一個循環,直到我想通了是怎麼回事。隨着蘋果公司今天發佈Xcode的最終版本,以及昨天推出的iOS 4,我終於開始考慮將應用程序移植到iOS 4上。壞訪問錯誤在cocos2d遊戲中SKD 4,而不是3
因此,我下載了新的SDK,並開始工作。在對我的應用程序進行一些處理後,想象一下當我遇到訪問錯誤時出現的意外,(試圖與一個釋放對象進行交談)。我討厭那些錯誤,所以很難弄清楚該怎麼做。所以,我花了最後45分鐘試圖找到我已經釋放的對象。我記不清我改變了什麼,並且錯誤信息沒有幫助。我啓用NSZombies(殭屍!!!),並得到這個錯誤:
2010-06-22 15:38:28.655 ProjectPidgey[17783:207] *** -[CCTargetedTouchHandler claimedTouches]: message sent to deallocated instance 0xd834b30
這是關於一樣有用,因爲它似乎。我在Cocos2D中,所以我覺得有什麼東西被觸動,不再存在?但我在代碼中找不到那樣的東西。所以,我隨心所欲地使用了舊版本的Xcode。編譯並安裝在運行iOS 3.0的模擬器上。工作很好。就像我創造的魅力一樣。
所以現在,我的問題是,這裏發生了什麼。 SDK 4和3之間有什麼區別,會導致錯誤錯誤?有任何想法嗎?或者,這可能與cocos2d有關,需要更新?
編輯:我做了一些插科打諢,發現通過移除這行代碼:
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
CGPoint touchPoint = [touch locationInView:[touch view]];
touchPoint = [[CCDirector sharedDirector] convertToGL:touchPoint];
if (![super containsTouchLocation:touch]) return NO;
[self.engine playerHitRedDot:self];
//[self.parent removeChild:self cleanup:YES]; //REMOVED THIS LINE
return YES;
}
然後,它的工作原理。所以看起來CCTargedTouch處理程序與我的精靈鏈接(當我觸摸它時會被刪除),並且某人一切都無法解決......但是,我需要刪除精靈(或者至少消失,但我想成爲記憶良心),那麼我該如何做到這一點?
謝謝!
我會將此標記爲答案,但它在調試中幫助我,但我從未發現實際的錯誤。我在樂器中使用了NSZombies,並且使用了一切可能的手段來追蹤錯誤,但最終還是把它當作了一個bug。並做了一些小技巧來解決它(在OS 4上做一件事,但在OS 3上做了一件不同的事情)。它的工作原理,但我希望有一個更好的解決方案... – 2010-06-28 21:15:36