여러 이미지를 다운로드하여 디스크에 저장하는 방법. 사용중인 보내기 요청은 다음과 같습니다.
for(NSDictionary *image in [data objectForKey:@"Catalogues"])
{
NSString *imurl =[image objectForKey:@"Image_Path"];
NSLog(@"%@",imurl);
NSString *urlstring =imurl;
NSLog(@"demo %@",urlstring);
NSURL *mailurl =[NSURL URLWithString:urlstring];
NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:mailurl];
NSOperationQueue *ques =[[NSOperationQueue alloc]init];
[NSURLConnection sendAsynchronousRequest:request queue:ques completionHandler:^(NSURLResponse *respo, NSData *data, NSError *err) {
UIImage *image = [UIImage imageWithData:data];
UIImageView *im = [[UIImageView alloc] initWithFrame:CGRectMake(50, 100, 150, 150)];
im.image = image;
[self.view addSubview:im];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@",documentsDirectory]
여러 이미지에 사용할 수있는 기본 방법이 있습니까?
이 특정 문제에 대한 "기본 방법"은 없습니다.
이미지 목록을 디스크에 저장하려는 경우 UIImages
처음부터 생성하지 않고 데이터를 이진 데이터로 처리하고 디스크에 직접 저장 하여 접근 방식을 개선 할 수 있습니다.
낮은 메모리 공간을 유지하기 위해 NSURLConnection
의 델리게이트 메서드를 구현 하고 청크 데이터가에 도착할 때 대상 파일에 이미지 데이터를 조각 단위 로 작성 (추가)합니다 connection:didReceiveData:
.
후자는 캡슐화 NSURLConnection
및 기타 관련 상태 를 캡슐화 하고 델리게이트를 NSOperation
구현하는 비동기 스타일을 사용 하는 전용 클래스를 생성하여 가장 잘 해결할 수 있습니다 NSURLConnection
.
타사 라이브러리도 고려할 수 있습니다. 경고는했지만 : 거의 모든 잘 알려진 타사 네트워크 라이브러리는 당신에 쉽게 쓰기 데이터 못하게 조각 파일에 있습니다. 기본적으로 수신 된 모든 데이터를 하나의 NSMutableData
개체에 누적 합니다. 이미지가 클 수 있고 한 번에 여러 연결을 시작할 수 있기 때문에 메모리 공간이 늘어날 수 있습니다.
또한 한 번에 두 개 이상의 연결을 시작하지 마십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다