2011-08-18 65 views
-1

當我運行這段代碼EXC_BAD_ACCESS錯誤

NSString *string = [NSString stringWithFormat:@"http://makrr.com/*****/****/*****/****/%@.mp3", [data objectForKey:@"location"]];` 

即時得到一個EXC_BAD_ACCESS。 [data objectForKey:@「Location」]是一個NSCFString。

+1

沒有什麼是固有的錯誤,你需要顯示更多的代碼。 – jtbandes

回答

2

我不知道在哪裏的EXC_BAD_ACCESS是從哪裏來的,但是編譯器讀取[data objectForKey:@"Location"]爲NSCFString因爲NSString是一類集羣,與其他基金類型,如NSNumber的和沿的NSArray:

類集羣是Foundation框架 廣泛使用的設計模式。類簇將公共抽象超類下的一些私有, 具體子類組合在一起。以這種方式分組的類別 簡化了面向對象框架的公開可見體系結構,而不減少其功能豐富性。 類集羣是基於中討論的抽象工廠設計模式 「可可設計模式。」

最有可能的,[data objectForKey:@"Location"]已經發布了太多次,並已釋放。這可能會導致錯誤EXC_BAD_ACCESS。你應該仔細檢查你的內存管理,看看它沒有被自動發佈(或手動發佈)。

2

EXC_BAD_ACCESS表示您試圖訪問已從內存中釋放的數據。很可能,您忘記了將對象保留在某處,或者「位置」對象的對象被釋放了太多次。沒有更多上下文的代碼,很難確切地說明問題是什麼。

Here's a question有幾個答案,提供了EXC_BAD_ACCESS的很好的解釋。