2010-07-20 2 views
0

iPad 시뮬레이터에서 임시 파일을 만들고 있습니다. 파일 생성을 테스트하기 위해 파일을 만든 다음 다시 읽습니다. 다음은이를 보여주는 몇 가지 코드는 : 최종 기능은 사진 앨범에있는 UIImage에서 쓰기 전에iPhone의 임시 파일 작성시 레이스 조건 (?)

-(NSString *) writeToTempFile:(UIImage*) image{ 
NSString *path = [self createTemporaryFile]; 
NSLog(@"path: %@", path); 
NSData *data = UIImageJPEGRepresentation(image, 1); 
[data writeToFile:path atomically:YES]; 
free(data); 
return path; 
} 

-(UIImage *) readTempFile:(NSString *) path{ 
NSData *data = [[NSData alloc] initWithContentsOfFile:path]; 
UIImage *image = [[UIImage alloc] initWithData:data]; 
return image; 
} 

나는,이 방법 차례로 호출합니다.

UIImageWriteToSavedPhotosAlbum(image2, self, nil, nil); 

문제는,이 항상 그것이 실행되는 세 번째에 내 응용 프로그램을 충돌합니다. 첫 번째와 두 번째로이 모든 작업을 성공적으로 수행하고 앨범에 저장합니다. 홈으로 세 번째로 충돌합니다. 어떤 아이디어?

답변

6
NSData *data = UIImageJPEGRepresentation(image, 1); 
[data writeToFile:path atomically:YES]; 
free(data); 

UIImageJPEGRepresentation에서 반환 된 NSData는 -autorelease d입니다. free() 할 필요가 없습니다. 이 잘못되었습니다. ~ free() Objective-C 개체 - -release 메시지를 대신 보냅니다.

Memory Management Programming Guide을 통해 읽으십시오.

+0

멋진. 번들에 감사드립니다! – mtrc