[英]Memory leak after i take photo from UIImagePickerControllerSourceTypeCamera
在我的應用程序中,我啟動相機以使用戶拍照:
UIImagePickerController *imagePickerControllerSubject = [[UIImagePickerController alloc] init];
imagePickerControllerSubject.delegate = self;
imagePickerControllerSubject.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:imagePickerControllerSubject animated:YES];
拍照后,我發現內存泄漏,您可以從Xcode Instrument中查看我的屏幕截圖。
我隔離了代碼。 我確定它來自相機,而不是來自我的應用程序,我在didFinishPickingImage函數中沒有留下任何內容。
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
[picker dismissModalViewControllerAnimated:YES];
return;
}
我使用ARC,所以不需要釋放imagePickerControllerSubject
這是Xcode Instruments的屏幕截圖
我使用最新版本的ios7
任何想法 ?
謝謝
編輯
我在這里過去了我的視圖控制器的整個代碼。 再簡單不過了。 並且不要忘記,只有在iOS 7且源類型為camera的情況下,我才會出現此內存泄漏。
#import "FeedbackVC.h"
@interface FeedbackVC ()
@end
@implementation FeedbackVC
- (IBAction)onClickTakePicture
{
NSLog(@"onClickTakePicture");
imagePickerControllerSubject = [[UIImagePickerController alloc] init];
imagePickerControllerSubject.delegate = self;
imagePickerControllerSubject.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:imagePickerControllerSubject animated:YES];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
{
picker.delegate = nil;
[self dismissViewControllerAnimated:NO completion:nil];
picker = nil;
NSLog(@"imagePickerController");
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
{
// Custom initialization
if (self)
{
self.navigationItem.title = @"Feedback";
self.title = @"Feedback";
self.tabBarItem.image = [UIImage imageNamed:@"second"];
}
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
在:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo
嘗試:
picker.delegate = nil
[self dismissViewControllerAnimated:NO completion:nil];
picker = nil;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.