で を使用しUIImagePicker
ていますviewController
。
非常に有名な「wait_fences: failed to receive reply: 10004003」と同様に、常にメモリ警告が表示される 2 種類の方法があります。
しかし、警告を表示する特定のコード行をたどることはできません。これらのメソッドの直後に、デバッグできない場所に常に表示されます。
// 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];
}
既にコードをチェックしましたが、メモリ リークの可能性はありませんでした。
写真の処理にはある程度のメモリが必要であることを知っているので、メモリ警告が表示されるのは正常です。
しかし、問題は時々、ナビゲーションスタックのparentViewコントローラーに戻るためのボタンなど、警告が表示されたときに重要なことですviewController
。release
そのため、ボタンやその他の重要なものがリリースされるのが早すぎる場合に、メモリ警告を受け取りたくありません。
それを修正する方法はありますか?