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