[英]Memory leak not detected by static analyzer
我碰到了這段代碼
UIImageView *image = [[UIImageView alloc] initWithFrame:imageFrame];
[image setImage:[UIImage imageNamed:@"myImage"]];
[self.view addSubview:image];
image = nil;
鑒於未使用ARC,我認為它將導致image
對象上的內存泄漏。 但是,靜態分析器無法捕捉到這一點。
我想知道是誰錯了,還是靜態分析儀,我想對此發表第二意見。
上面的代碼是否真的泄漏?
原來一個人誤會是我((!)
我正在審核的應用程序非常大,並且我錯過了開發人員在特定類上啟用帶有-fobjc-arc
標志的ARC的事實,包括上述代碼段中的一個。
靜電分析儀萬歲!
self.view
有一個指向其子視圖的指針數組,這些子視圖將使您的image
可訪問,並使引用計數器(用於ARC)保持大於0。
CGRect imageFrame = CGRectMake(100, 100, 100, 200);
UIImageView *image = [[UIImageView alloc] initWithFrame:imageFrame];
NSLog(@"image=%@", image);
[image setImage:[UIImage imageNamed:@"Default"]];
[self.view addSubview:image];
image = nil;
UIView *v = [[self.view subviews] objectAtIndex:0];
NSLog(@"v=%@", v);
當你把self.view = nil;
image
的參考計數器將下降,並且內存將被釋放。 我認為您無法通過這種方式造成泄漏:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.