2013-01-11 4 views
1

카메라에서 사진을 찍을 때 내 응용 프로그램이 "Received Memory Warning"이라고 말하면 충돌이 발생합니다 (UIImagePickerController). 내가, 내가 사고를 얻고 내 장치 (2 개 이상)에서 실행중인 다른 응용 프로그램이 있으면 거기에 하나의 다른 응용 프로그램의 실행중인 경우, 또는 내가 시작하기 전에 다른 앱이 실행되지 :ImagePickerController 내 장치에서 다른 응용 프로그램 (2 개 이상의 응용 프로그램)이 실행 중일 때 "수신 된 메모리 경고"라고 내 응용 프로그램이 충돌합니다

시나리오는 내가 충돌을 얻을 때 내 응용 프로그램을 누른 다음 전혀 충돌이 없습니다.

이 충돌은 카메라에서 사진을 찍을 때만 발생하지만 사진 라이브러리에서 사진을 선택하면 전혀 충돌이 없습니다.

Xcode 4.3.2를 사용 중이고 ARC을 사용 중입니다.

아무도 도와 드릴 수 있습니까?

은 내가
-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex: (NSInteger)buttonIndex 
{ 

    if (buttonIndex < 2) 
    { 
     if([UIImagePickerController isSourceTypeAvailable:buttonIndex==0?UIImagePickerControllerSourceTypeCamera:UIImagePickerControllerSourceTypePhotoLibrary]) 
     { 
      UIImagePickerController *ipc = [[UIImagePickerController alloc] init]; 
      [ipc setDelegate:(id<UIImagePickerControllerDelegate,UINavigationControllerDelegate>) self]; 
      [ipc setSourceType:buttonIndex==0?UIImagePickerControllerSourceTypeCamera:UIImagePickerControllerSourceTypePhotoLibrary]; 
      if (buttonIndex == 0) 
      { 
       [ipc setAllowsEditing:NO]; 
      } 
      [ipc setMediaTypes:[NSArray arrayWithObjects:(NSString *)kUTTypeImage, nil]]; 
      [self presentModalViewController:ipc animated:YES]; 
     } 
     else 
     { 
      UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Action Alert" message:@"Camera is not available in this device." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
      [alert show]; 
     } 
    } 
} 



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

     [self dismissModalViewControllerAnimated:YES]; 
     UIImage *image = [info objectForKey:UIImagePickerControllerEditedImage]; 
     if (!image) image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
     [NSThread detachNewThreadSelector:@selector(scallImage:) toTarget:self withObject:image]; 
} 




-(void) scallImage:(UIImage *) image 
    { 
    CGSize newSize = CGSizeMake(320, 480); 
    UIGraphicsBeginImageContext(newSize); 
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
    image=nil; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    NSString *cImage = [UIImageJPEGRepresentation(newImage, 0.5) base64EncodedString]; 
    [ImageButton setBackgroundImage:newImage forState:UIControlStateNormal]; 
    [ImageButton setHidden:NO]; 
    //[profileImageButton setBackgroundImage:newImage forState:UIControlStateNormal]; 
    newImage=nil; 
} 

내 코드에서 잘못된 어떤 일이 있습니까

를 코드를 사용하고 있습니까?

+0

이 발생 않거나은 (테이블보기에서처럼, 예를 들어)있는 UIImage의 수는로드 및 주민 및 표시 개체를해야합니까? –

+0

두 가지 방법으로 발생합니다. – Vasanth

답변

-2

는 드디어 프로젝트에서 원치 않는 이미지/자원의 일부를 제거하여 I이 충돌하지 않고 내 응용 프로그램을 실행 할 수 있음을 깨달았다 ...! 도와 줘서 고마워! 첫 번째 사진이 표시된 후

0

해당 메서드에서 UIImagePickerController를 할당하지 않도록하십시오. 대신 viewDidLoad에 할당하십시오. 다음 코드 줄을 viewDidLoad에 넣으십시오.

ipc = [[UIImagePickerController alloc] init]; 

그리고 먼저 .h 파일로 선언하십시오.

희망이 도움이됩니다.

+0

감사하지만 도움이 안됩니다! – Vasanth

+0

어떻게 ARC에 있기 때문에 'ipc'메서드가 끝날 때까지 제대로 풀릴 것인가? – Vasanth

+0

viewDidUnload 후에 해제 될 것입니다. – Nameet