簡體   English   中英

Object 保留計數

[英]Object retain count

我像這樣分配了一個 object:

PixelInfo *ob1=[[PixelInfo alloc]initWithName:clr :t];

那么object的retaincount為1。

然后我就這樣了......

[faceColor addObject:ob1];

然后保留計數增加到 2。為什么?

for(b=xi[i];b<=(xi[i+1]+1);b++)
        {   


            CGPoint t;
            t.x=b;
            t.y=y;

            UIColor *clr=nil;
            clr=[self getPixelColorAtLocation:loadImage.CGImage :t];    

             PixelInfo *ob=[[PixelInfo alloc]initWithName:clr :t];                    
             [faceColor addObject:ob];
             [ob release];
          }

這是我的代碼。即使在釋放 object ob 之后,Memory 也會發生泄漏。為什么?

當您執行[smth addObject: obj]時,所有集合(數組、字典、集合)都會增加對象的保留計數。

PS。 AddSubview 還增加了子視圖的保留計數

在下面的語句中,您已經分配了 object,然后保留計數將增加 1,這就是您得到 1 的原因。

PixelInfo *ob1=[[PixelInfo alloc]initWithName:clr :t];

在下一個語句中,我認為 faceColor 是一個NSMutableArray

[faceColor addObject:ob1];

您正在將 object ob1添加到數組中,因此 iOS 會將任何 object 的保留計數增加 1,如果您將其添加到數組中,

這就是原因,你有保留計數 2。

編輯:

這是蘋果所說的。

重要提示:此方法在調試 memory 管理問題時通常沒有價值。 因為任意數量的框架對象可能保留了 object 以保存對它的引用,而同時自動釋放池可能在 object 上保存任意數量的延遲版本,因此您不太可能從中獲得有用的信息方法。

我假設faceColor是一個 NSMutableArray。 當您將 object 添加到 NSArray 或 NSDictionary 等容器時,該容器會保留添加的 object。 那是因為容器現在依賴於添加的 object 來繼續存在,只要它在容器內。

暫無
暫無

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

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