рдЖрдИрдУрдПрд╕ рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдбрд╛рдЙрдирд▓реЛрдб

рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░ рд╕рдВрднрд╡рддрдГ рдкрд░реНрдпрд╛рдкреНрдд рд╕рд╛рдордЧреНрд░реА рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ Apple рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЕрдкрдирд╛ рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░реВрдВрдЧрд╛ред

рдХрд╛рд░реНрдп рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдЫрд╡рд┐рдпрд╛рдВ рд▓реЛрдб рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП UIImageView), рдЖрдкрдХреЛ рдореБрдЦреНрдп UI рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред


рд╣рдорд╛рд░реЗ рд╡рд░реНрдЧ рдХреЛ ImageLoader рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ ImageLoaderDelegate рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╡рд╣ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░ рд╕рдХреЗ, рдЬрдм рдЪрд┐рддреНрд░ рдкрд╣рд▓реЗ рд╣реА рдЖ рдЪреБрдХрд╛ рд╣реЛред
ImageLoader.h

#import @protocol ImageLoaderDelegate; //   ,      //    delegate @interface ImageLoader : NSObject { id delegate; //     int index; //         NSMutableData *activeDownloadData; //    } @property (nonatomic, assign) id delegate; @property (nonatomic) int index; - (void)loadImage:(NSString *)imageURLString; // ,   . //    URL   @end @protocol ImageLoaderDelegate - (void) appImageDidLoad:(UIImage *)image index:(int)index; //  ,     @end 

ImageLoader.m
 #import "ImageLoader.h" @implementation ImageLoader @synthesize delegate, index; - (void)loadImage:(NSString *)imageURLString { NSURL *imgURL = [NSURL URLWithString:imageURLString]; NSMutableURLRequest *request = [NSURLRequest requestWithURL:imgURL]; NSURLConnection *newConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; if (newConnection) { activeDownloadData = [[NSMutableData data] retain]; //   -  retain } } - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response { [activeDownloadData setLength:0]; //    ,    0 } - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data { [activeDownloadData appendData:data]; //    } - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{ [connection release]; [activeDownloadData release]; } - (void)connectionDidFinishLoading:(NSURLConnection *)connection { UIImage *image = [UIImage imageWithData:activeDownloadData]; //     if (delegate != nil) { [delegate appImageDidLoad:image index:index]; //    } else { activeDownloadData = nil; NSLog(@"Can't find delegate for ImageLoader"); } [activeDownloadData release]; [connection release]; } - (void)dealloc { [super dealloc]; } @end 

рдпрд╣ рдХреЗрд╡рд▓ рд╡рд╛рдВрдЫрд┐рдд рджреГрд╢реНрдп рдореЗрдВ рдЫрд╡рд┐ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред
рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХред рдпрд╣ рдЗрдВрдбреЗрдХреНрд╕ рд▓реЛрдбрд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд╛рдВрдЫрд┐рдд рджреГрд╢реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЯреИрдЧ рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рдПрдХ рд╣реА рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИред
рдмреЗрд╢рдХ, рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ, рдЖрдкрдХреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд░реЗрдЦрд╛ рдЬреЛрдбрд╝рдХрд░ рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХреЛ ImageLoader рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛
 ... - (void)viewDidLoad { [super viewDidLoad]; viewIndex = 0; NSArray *imageUrls = [NSArray arrayWithObjects: //     @"http://cdn5.iconfinder.com/data/icons/toys/128/teddy_bear_toy_1.png", @"http://cdn5.iconfinder.com/data/icons/toys/128/teddy_bear_toy_4.png", @"http://cdn5.iconfinder.com/data/icons/toys/128/teddy_bear_toy_5.png", nil]; for (NSString *imgURL in imageUrls) { ImageLoader *loader = [[ImageLoader alloc] init]; //    UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(10+(100*viewIndex), 50, 100, 100)]; [imgView setTag:viewIndex]; //    ImgView      [[self view] addSubview:imgView]; [imgView release]; [loader setIndex:viewIndex]; //      [loader setDelegate:self]; //      [loader loadImage:imgURL]; //    [loader release]; viewIndex++; } } - (void)appImageDidLoad:(UIImage* )image index:(int)index { //   ImageLoader for (UIView *tmp in [self view].subviews) { //   subview   view  UIImageView c tag = index if ([tmp isKindOfClass:[UIImageView class]] && tmp.tag == index) { [(UIImageView *)tmp setImage:image]; //    } } } ... 

рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред

Source: https://habr.com/ru/post/In125510/


All Articles