2010-03-08 2 views
1

버튼이있는 NIB 파일이 있습니다. 이 버튼을 클릭하면 setWallpaper : 선택기가 호출됩니다. malloc에 ​​의해 던져진 에러를 제외하고 모든 것이 예상대로 작동합니다 (이미지가 저장됩니다).UIImageWriteToSavedPhotosMalloc_error가있는 앨범

malloc: *** error for object 0x184d000: pointer being freed was not allocated *** 
set a breakpoint in malloc_error_break to debug 

malloc_error_break에 중단 점을 설정했지만 디버거에서 아무것도 이해하지 못합니다. 개체 0x184d000도 찾을 수 없었습니다. 아무도 왜 이런 일이 일어나는 지 알고 있습니까? 나는 또한 UIImageWriteToSavedPhotosAlbum에 보내기 전에 UIImage를 유지하려했지만 성공하지 못했습니다.

내 코드는 다음과 같습니다 :

- (IBAction)setWallpaper:(id)sender { 
    UIImage *image = [UIImage imageNamed:@"wallpaper_01.png"]; 
    UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil); 
} 

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo { 
    UIAlertView *alertView = [[UIAlertView alloc] 
      initWithTitle:NSLocalizedString(@"Galo!!!",@"Saved image message: title") 
       message:NSLocalizedString(@"Now, check your \"saved photos\" group at \"photos\" app in your iPhone and select the actions menu > set as wallpaper.",@"Saved image message") 
       delegate:nil 
     cancelButtonTitle:NSLocalizedString(@"OK",@"OK Button") 
     otherButtonTitles:nil]; 
    [alertView show]; 
    [alertView release]; 
} 

답변

2

거의 모든 프로젝트를 복제 한 후 Ok입니다. 문제는 OS3.0에서 발생한다는 것을 알았습니다. OS3.1로 변경되었으며 모든 것이 잘 작동합니다. 도와 줘서 고마워, 칼!

0

UIImageWriteToSavedPhotosAlbum은 그 모든 시간 동안 주위를 확인하여 UIImage 숙박을해야 즉, 비동기 적으로 저장한다. autoreleased 객체를 전달하고 있으므로 언젠가는 저장을 시도하는 중에 언젠가 충돌하고 있습니다. setWallpaper:을 변경하여 retainUIImage으로 보내주십시오. 그런 다음 누출을 방지하기 위해 콜백에 release 또는 autorelease을 콜백 할 수 있습니다. 예 :

변경 이미지를 얻을 줄은 :

UIImage *image = [[UIImage imageNamed:@"wallpaper_01.png"] retain]; 

그런 다음 콜백

[image release]; 

를 추가합니다.

+0

나는 그것을했다. 그리고 아직도 같은 오류를 얻고있다. 그런데, 나는 malloc으로부터 2 개의 오류 메시지를 받는다. 둘 다 똑같습니다. 이제 빈 프로젝트를 만들고 내 ViewController + NIB를 복사하고 거기에서 잘 작동했습니다 ... 프로젝트에 추가 된 프레임 워크 나 lib가 버그를 일으키는 지 확인합니다 ... –