簡體   English   中英

釋放復制的對象時執行EXEC_BAD_ACCESS

[英]EXEC_BAD_ACCESS when releasing a copied object

這一直讓我喪命。.因為它的內存管理問題...

我有一個創建的NSArray,就像在Class 2中那樣

@property (nonatomic, copy) NSArray * sourceArray;

我從另一個類(例如Class 1)設置此數組...

Class2 = [[Class2 alloc] initWithFrame:self.bounds];
[Class2 setSourceArray:self.namesArray];

我確定self.namesArray包含對象。

當我釋放Class 1時,它會釋放Class 2,因為Class 2是Class 1中的子視圖,但是當Class 2在dealloc中釋放sourceArray時,我得到了EXEC_BAD_ACCESS,就像這樣...

[sourceArray release];

如果我不釋放Class 1中的namesArray,則不會出現此錯誤。這沒有任何意義,因為我使用的是聲明sourceArray為COPY,據我所知,它為Class 2提供了自己的數組版本。

有人能幫我一下嗎? 這太痛苦了!

更多信息:在我嘗試發布sourcearray之前的引用計數為1 ...那么為什么發布不起作用?

這沒有意義,因為我使用的是將sourceArray聲明為COPY,據我所知,它為Class 2提供了自己的數組版本。

這就是這個主意,但是它可能會幫助您了解-copy通常只是將對象保留為不可變的對象。 這與您的代碼無關緊要,因為原始對象與不可變對象的副本沒有區別。 可能是您過度釋放了Class1中的數組,而該問題僅在Class2釋放數組的“副本”時才會出現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM