我在我的viewController
使用UIImagePicker
一个UIImagePicker时,总是内存警告与相机
,并有两种方法中,我总是得到一个内存警告,还有非常有名的“wait_fences :未能收到回复:10004003“,
但我不能追溯到提示警告的特定代码行 - 它总是在这些方法之后立即出现,我无法调试。
// in myViewController.h
// the first 2 are the methods that I alloc my UIImagePicker,
// here, self.photoPicker is a retained property of UIImagePicker.
- (IBAction)fromAlbumButtonTapped {
if (self.photoPicker == nil) {
self.photoPicker = [[[UIImagePickerController alloc] init] autorelease];
self.photoPicker.delegate = self;
}
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
self.photoPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
[self presentModalViewController:self.photoPicker animated:YES];
return;
}
}
- (IBAction)fromCameraButtonTapped {
if (self.photoPicker == nil) {
self.photoPicker = [[[UIImagePickerController alloc] init] autorelease];
self.photoPicker.delegate = self;
}
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
self.photoPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:self.photoPicker animated:YES];
return;
}
}
// and this is another part that gives me the memory warning - getting a photo.
- (void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {
self._photo = [info objectForKey:UIImagePickerControllerOriginalImage];
self.photoView.photoView.image = self._photo;
[self.photoButton setImage:self._photo forState:UIControlStateNormal];
[self dismissModalViewControllerAnimated: YES];
}
我已经检查了我的代码,发现没有潜在的内存泄漏,尽我所知。
我知道处理照片确实需要一些内存,所以得到内存警告是正常的。
但问题有时候,我的viewController
只是release
当警告来临时重要的东西,比如在导航堆栈中返回到父视图控制器的一些按钮。
所以我不想得到一个内存警告,如果我的按钮或其他重要的东西将被释放得太早。
有什么方法可以解决它吗?