0
我在iOS 6上有一個目錄應用程序。所以在每個視圖中都有一些UIImageView。由於UIImageView與故事板導致的內存警告和崩潰
我認爲,當我傳遞給其他觀點時,舊的圖像視圖並未發佈。所以我真正的Mem。變成300MB和虛擬內存。變成500MB,我收到內存警告。
我用
- (void)viewDidUnload
{
[super viewDidUnload];
itemImageView = nil;
scrollView = nil;
}
我應該怎麼做嗎?我是否缺少平常的東西?
更新:
我初始化ImageView的是這樣的:
__block UIImageView *imageview = [[UIImageView alloc] init];
,並通過AFNetworking設置:
AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:imageRequest
imageProcessingBlock:nil
cacheName:@"nscache"
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image){
imageview.image = image;
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error){ NSLog([error description]); }
];
更新:
我用故事板。所以從一種觀點到另一種觀點,我正在使用塞格。如果我回到第一個控制器,則不會調用第二個控制器的viewDidUnload。如果再次轉到第二個視圖,內存會增加,這意味着第二個視圖中的所有圖像視圖都會再次加載。我錯在哪裏?
更新2: 我開始相信,它是關於Storyboard和Push segue。要回到第一個視圖,我正在使用push segue。我創建另一個自定義的細節,彈出第二個視圖控制器。
你是如何聲明/初始化'itemImageView'和'scrollView'的?也許你需要做'[itemImageView release];'和'[scrollView release]'; –
@AleksG我認爲他正在使用ARC,所以發佈是不可接受的 – NeverBe
@Never可能,但我想讓他說明他在使用它。從他展示的代碼中,這兩位是班級成員;所以他們必須以某種方式被宣佈/初始化。如果他使用明確的「保留」,那麼他可能需要「釋放」。 –