2011-10-13 79 views
0

時碰到我讀NSUserDefaults的(經由InAppSettingsKit)發生錯誤。我不確定是否我的代碼是這個問題。我已設立觀察員,以檢查是否有任何改變NSUserDefaults的:「EXEC_BAD_ACCESS」錯誤閱讀NSUserDefaults的

NSNotificationCenter *center = [NSNotificationCenter defaultCenter]; 
[center addObserver:self 
      selector:@selector(setOptions) 
       name:NSUserDefaultsDidChangeNotification 
      object:nil]; 

這就要求用於更新的MKMapView的「地圖式」的方法:

的應用設置爲您按下按鈕並初始化InAppSettingsKit,在此範圍內更改要顯示的地圖類型的設置並返回到我的應用程序的主屏幕。此時地圖似乎更新正確,沒有問題。當我嘗試重新啓動InAppSettingsKit以再次更改地圖類型時,會發生此問題。

有誰知道這是否是我的代碼,這是個問題,如果是這樣我怎麼能去修復它?

回答

3

只是刪除代碼行:[mapStyle release]

stringForKey:將返回一個自動釋放NSString。所以你的代碼不負責釋放。它在第一次迭代中工作正常,因爲第一次釋放調用將釋放該字符串,但NSUserDefaults仍然有一個指向該字符串的指針,但未被使用。在第二次迭代你得到的指針,並嘗試致電isEqualToString上的dealloc-ED對象至極將導致BAD_ACCESS