2013-12-08 22 views
1

我在这里看到了很多问题关于拍照与此API的iOS拍照与图片选择内存泄漏

,但我遇到具体的问题

与下面的代码

.h文件中

@interface ComposeMViewController : UIViewController <UITextFieldDelegate , UITableViewDelegate ,UITableViewDataSource, UIImagePickerControllerDelegate , UINavigationControllerDelegate , MFMailComposeViewControllerDelegate , MFMessageComposeViewControllerDelegate , DistributionListViewControllerDelegate,UITextViewDelegate> 
在.M

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
     //UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 
     _imagePicker.delegate = self; 
     _imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 

     [self presentViewController:_imagePicker animated:YES completion:nil]; 
    } else { 
     NSLog(@"Camera not available"); 
    } 


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 

    NSLog(@"At 1"); 
    UIImage *fullImage = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    _attachment = [NSMutableDictionary dictionary]; 
    NSData* imgData = UIImageJPEGRepresentation(fullImage,0.0); 
    [_attachment setObject:@"atachmentINFOR.jpg" forKey:@"ImageName"]; 
    [_attachment setObject:imgData forKey:@"ImageData"]; 
    NSLog(@"%@",info); 
    [self dismissViewControllerAnimated:YES completion:nil];//warning disabled 
} 

我正在收到内存警告,可以some1知道为什么?

回答

1

您应该始终检查源类型是否可用于文档。正如@编程托马斯所说的确保UIImagePickerControllerDelegate,UINav igationControllerDelegate代表已设置..

if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { 
     UIImagePickerController *imagePickerController = [[UIImagePickerController alloc] init]; 
     imagePickerController.delegate = self; 
     imagePickerController.sourceType = UIImagePickerControllerSourceTypeCamera; 

     [self presentViewController:imagePickerController animated:YES completion:nil]; 
    } else { 
     NSLog(@"Camera not available"); 
    } 

如果你碰巧得到类似的错误消息“警告:试图提出有关谁的观点是不是在窗口层次”的时候viewContoller还没有完全加载但等待通常发生一秒钟左右。也许使用派遣计时器后半秒

1

最有可能的解释是,你的UIViewController不向UINavigationControllerDelegate或UIImagePickerControllerDelegate响应(它必须为了对的UIImagePickerController委托双方做出回应。

你的第二次尝试是不是因为编译SourceType不是UIImagePickerController的属性 - 它是sourceType按照惯例,Objective-C/Cocoa在变量和属性名称的开始处使用小写字母

+0

它不回应(我没有这类型的警告) 以及第二次尝试工作正常,为画廊选择器 但对相机不:( –

+0

你是不是有一个可用的相机(在真实设备上测试UIImagePickerController有一个允许测试的方法)? –

+0

是的,我正在自己的手机上测试:) –

0

这可能会帮助别人 - 我知道这是一个古老的线程,但我一直在遇到内存泄漏自己在相机方面。我在上面运行仪器(会推荐),并发现负责的框架是:[UIImagePickerController viewWillDisappear:]。这属于UIKit库,所以我恐怕没有什么可以纠正内存泄漏。它的错误在UIKit。我在iPhone 5s上使用iOS7.1。我建议使用一个高效的内存库,例如可以在GitHub上找到的SimpleCam。