2009-07-08 23 views
5

我得到這個錯誤有人知道嗎? 2009-07-08 18:42:36.778的FlashCards [1297:20B]類別ID = 1周 的FlashCards(1297,0xa0690fa0)malloc的:*誤差對象0x4fd78a0:指針被釋放沒有被分配 的FlashCards(1297,0xa0690fa0)的malloc:*錯誤對象0x4fdc200:雙自由 ***設置malloc_error_break斷點調試是否有必要在iphone中發佈NSInteger?

回答

16

沒有,一個NSInteger不是一個對象;它僅僅是爲int一個typedef(用於32位應用程序)或一個long(用於64位應用程序):

#if __LP64__ 
typedef long NSInteger; 
#else 
typedef int NSInteger; 
endif 
+0

告訴我關於錯誤的信息我該如何找到哪個對象出錯? – 2009-07-08 14:02:15

+0

好吧,你好像是在NSInteger上調用你不能做的發佈,因爲它不是一個對象。 – 2009-07-08 14:07:38

3

NSInteger的爲基本類型一個typedef,它不是一個對象,該對象可以響應像保留或釋放的方法。儘管它的命名方式類似於像NSNumber或NSValue這樣的可可類,但實際上它的處理方式與int,float等相同。

+0

告訴我有關錯誤的信息,我該如何查找哪個對象發生錯誤? – 2009-07-08 14:03:14

0

錯誤消息爲您提供了一個有關如何調試此問題的良好提示:在malloc_error_break中設置斷點。在Xcode中,打開斷點窗口(option-cmd-B)。在「雙擊符號」字段中,輸入malloc_error_break。在調試器中重新運行您的應用程序(從運行菜單中選擇調試)。調試器將在您報告的錯誤點停止。我會在那個時候檢查堆棧跟蹤,找到你已經雙重釋放了這個內存的位置。

相關問題