簡體   English   中英

NSArray的目標C內存管理問題

[英]Objective C memory management question with NSArray

我正在使用這樣的浮點數加載數組:

NSArray *arr= [NSArray arrayWithObjects:
                [NSNumber numberWithFloat:1.9],
                [NSNumber numberWithFloat:1.7],
                [NSNumber numberWithFloat:1.6],
                [NSNumber numberWithFloat:1.9],nil];

現在我知道這是正確的做法,但是我對零售數量感到困惑。

  1. 每個對象都是通過[NSNumber numberWithFloat:]方法創建的。 這給對象保留一個1個dosnt的計數嗎? -否則將回收該對象

  2. arrayWithObjects:方法向每個對象發送保留消息。

這意味着每個對象的保留續數為2。取消分配數組時,釋放每個對象的保留數為1。

我錯過了什么?

NSNumber numberWithFloat:方法未返回保留的對象。

通常,除非您使用alloccopynew ,否則可以假定您得到的保留計數為零的對象。 這樣,唯一的保留是在NSArray上添加了對象時。

關於此類事情的博客很好: http//interfacelab.com/objective-c-memory-management-for-lazy-people/

無需釋放這些對象。
arrayWithObjects:numberWithFloat:創建您不擁有的對象。

暫無
暫無

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

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