2013-02-12 50 views
0

我有一個分配的對象,其中它的屬性是保存在以下內存地方: Memory status變存儲器地址歸屬EXEC_BAD_ACESS

當我做了NSDate屬性的簡單屬性爲變量它給了我一個EXEC_BAD_ACESS。 正如您從第一張圖片中可以看到的那樣,只有日期屬性和fileDate變量具有不同的地址。

EXEC_BAD_ACESS

上午我做一些指針相關的錯誤? 其他2個屬性正確地分配給變量,它只發生在NSDate,所以也許我錯過了關於NSDate的一些細節。

EDIT1

DownloadFile定義: DownloadFile

EDIT2

init函數: enter image description here

EDIT3 日期參數:

date

+1

請顯示日期屬性和'DownloadFile'類的定義。 – trojanfoe 2013-02-12 11:12:28

+0

是否currDFile.date是字符串? – Rushi 2013-02-12 11:15:29

+0

屬性和NSDate的分配? – 2013-02-12 11:16:08

回答

3

有什麼理由不使用ARC?有不少內存管理錯誤導致泄漏,並導致崩潰。

NSDate *dateFromString = [dateFormatter dateFromString:receivedDate]; 

返回一個自動釋放NSDate所以當你再調用額外

[dateFromString autorelease]; 

你overreleasing的NSDate因此你的崩潰。


[pFile setDate:[[NSDate alloc] init]]; 

是內存泄漏。通過設置器setDate:將導致pFile在該日期取+1保留,該保留應在dealloc中釋放。調用[[NSDate alloc] init]會返回一個帶有+1的日期對象,但不會在別處釋放。

可以解決這個問題要麼

[NSDate date] 

或者

[[[NSDate alloc] init] autorelease]; 

第一個選擇是首選

+0

是的你是對的。我沒有注意到額外的autorelease。謝謝。 – 2013-02-12 11:46:47

+0

另外值得注意的是,雖然它起作用,但在行'dateFromString!= Nil'中比較指向'Nil'的對象指針在語義上是不正確的,您應該更喜歡全部小寫'nil'。查看[NSHipster](http://nshipster.com/nil/)獲取更多信息 – 2013-02-12 11:55:15

+0

你如何建議我繞過''[pFile setDate:[[NSDate alloc] init]];'? – 2013-02-12 12:02:08