我有一個內存問題與小應用程序無限量的截圖每X毫秒,並在ImageView中顯示它們。即使使用自動釋放,它也會非常迅速地淹沒內存。下面的代碼:目標C @autoreleasepool無限循環採取截圖
- (void)draw {
do {
@autoreleasepool {
CGImageRef image1 = CGDisplayCreateImage(kCGDirectMainDisplay);
NSBitmapImageRep *bitmapRep = [[NSBitmapImageRep alloc] initWithCGImage:image1];
NSImage *image = [[NSImage alloc] init];
[image addRepresentation:bitmapRep];
_imageView.image = image;
[NSThread sleepForTimeInterval:1];
}
}while(true);
}
任何想法?
你不能沒有ARC使用@autoreleasepool。 – 2013-03-25 23:29:30
@RamyAlZuhouri:是的,你可以。它與ARC同時推出,但不需要ARC。 – 2013-03-25 23:39:13
由於你從來沒有將控制權返回給runloop,我假設這是在後臺線程上運行。您正在訪問僅在主線程中允許的UI控件('_imageView')。你應該改變它爲'dispatch_async(dispatch_get_main_thread(),^ {_imageView.image = image;});' – 2013-03-25 23:40:34