UPDATE這段代碼其實不是問題所在;註釋掉所有CoreGraphics行並返回數組中的第一個圖像,因爲結果並不能防止崩潰的發生,所以我必須向上遊看。CoreGraphics內存警告和崩潰;儀器顯示沒有內存泄漏
我在75ms NSTimer上運行這個。它適用於480x360的圖像,並且可以整天運行而不會崩潰。
但是,當我發送的圖像是1024x768,它會在大約20秒後崩潰,給出了幾個低內存警告。
在這兩種情況下,儀器都顯示絕對正常的內存使用情況:平面分配圖,小於一兆字節的活動字節,整個時間無泄漏。
那麼,這是怎麼回事?核心圖形不知何故使用太多內存而不顯示它?
另外值得一提的是:(NSMutableArray *)imgs中沒有那麼多圖像 - 通常是三個,有時是兩個或四個。無論如何崩潰。只有兩個時,碰撞速度稍快。
- (UIImage*) imagefromImages:(NSMutableArray*)imgs andFilterName:(NSString*)filterName {
UIImage *tmpResultant = [imgs objectAtIndex:0];
CGSize s = [tmpResultant size];
UIGraphicsBeginImageContext(s);
[tmpResultant drawInRect:CGRectMake(0, 0, s.width, s.height) blendMode:kCGBlendModeNormal alpha:1.0];
for (int i=1; i<[imgs count]; i++) { [[imgs objectAtIndex:i] drawInRect:CGRectMake(0, 0, s.width, s.height) blendMode:kCGBlendModeMultiply alpha:1.0]; }
tmpResultant = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return tmpResultant;
}
崩潰日誌顯示多少內存?你使用'[UIImage imageNamed:]'? – Kevin
我沒有在任何地方使用[UIImage imageNamed:] - 所有圖像都從相機捕獲併發送到imageBuffer類,該類返回圖像的NSMutableArrays。它崩潰而沒有崩潰日誌輸出,但在設備日誌中,它看起來像進程正在使用62582個頁面。 –