簡體   English   中英

iPhone-不泄漏

[英]iphone - not leaking

什么是正確的方法?

我有一個數組,將在幾種方法上使用。 我將向其添加對象,獲取值,替換值等。

今天,我這樣做:

我在.h上聲明,使用類似

NSMutableArray *myArray;

應用程序啟動后,我就在.m上聲明了類似

myArray = [[[NSArray alloc] init] retain];

如果我不添加保留,數組將在某個時候釋放,應用程序將崩潰。 但是在應用程序開始時分配該數組,並在不釋放它的情況下將其“打開”會使儀器哭泣,將手指指向我,稱我為“ leaker”。

怎么解決呢? 這是正確的方法嗎? 你們怎么做這樣的事情?

謝謝

alloc隱式地將保留計數設置為1。通過發送retain消息,您將保留計數遞增為2。為了釋放對象,您將需要釋放兩次。 否則會導致內存泄漏。

理想情況下,您應該使用[[NSArray alloc] init]init方法中創建對象,然后在dealloc方法中將其釋放,如下所示:

- (void)dealloc {
    [myArray release];
    [super dealloc];
}

您可能還會發現這篇文章很有用: http : //developer.apple.com/mac/library/documentation/cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html

還有一件事:您將myArray聲明為NSMutableArray但將其實例化為NSArray 也許這就是導致崩潰的原因。

您不應該保留剛剛創建的對象。 您已經擁有它。 如您所說,如果“數組將在某個時候釋放並且應用程序將崩潰”,那么您應該更改代碼。 您的代碼不應釋放仍要保留的對象。

暫無
暫無

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

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