alertView будет отображаться только после завершения загрузки изображения.Одним из решений этой проблемы является
Создание другого класса ImageDownLoad.h
в .h
@property(nonatomic,assign)id delegate;
@property(nonatomic,retain) NSString *path;
в .m
@synthesize delegate;
@synthesize path;
Создатьа именно метод,
-(void)startDownloadImageWithUrl:(NSURL*)imageUrl withLocalFilePath:(NSSTring*)filePath{
path = filePath;
receiveData = [NSMutableData data];
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:imageUrl];
NSURLConnection *connection = [[NSURLConnection alloc]initWithRequest:request];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[receiveData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
[(id)delegate performSelector:@selector(SaveData:inFilePath:) withObject:receiveData withObject:path];
}
Это создаст соединение и начнет загружать ваше изображение в отдельный класс.Затем в своем ViewController добавьте немного кода, как показано ниже.
- (void)updateImage {
NSString *snake_ico_file = @"snake_img_icn_";
NSString *filePath = [self dataFile:[snake_ico_file stringByAppendingString:@"0.jpg"]];
int max_count = [[self readData] count];
if (![[NSFileManager defaultManager] fileExistsAtPath:filePath]) {
for (int i = 0; i < max_count; i++) {
NSString *path = @"http://exitosus.no.de/drngoo/image/";
path = [path stringByAppendingFormat:@"%d",i];
NSString *ico_path = [path stringByAppendingFormat:@"/ico"];
//icon
NSArray *paths =NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filename = [snake_ico_file stringByAppendingFormat:@"%d.jpg"];
NSString *localFilePath = [documentsDirectory stringByAppendingPathComponent:filename];
ImageDownLoad *imageDown = [[ImageDownLoad alloc]init];
imageDown.delegate = self;
[imageDown startDownloadImageWithUrl:[NSURL URLWithString:ico_path] withLocalFilePath:localFilePath];
}
}
Этот метод будет вызываться каждый раз, когда загрузка изображения завершается.
-(void)SaveData:(NSData*)data inFilePath:(NSString*)filePath{
[data writeToFile:filePath atomically:YES];
}
Ваш пользовательский интерфейс не будет задерживаться, выполняя следующие действия:)