[英]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.