Я теперь использует функцию, которая возвращает NSString после поиска HTML, КодObjective-с задержкой функции
- (IBAction) analysys:(id)sender {
comparisonOptions = NSCaseInsensitiveSearch | NSDiacriticInsensitiveSearch;
NSString *coupangURL = @"http://www.coupang.com/alldeal.pang";
NSMutableArray * title = [[NSMutableArray alloc] init];
[title addObject:(NSString*)@"box"];
for (NSString * e in title) {
NSString * addr = [self searchCoupang:coupangURL targetString:e];
self.myTextView.text = addr;
}
}
- (NSString*) searchCoupang:(NSString *) url targetString:(NSString*) tString{
NSString *testString = [NSString stringWithContentsOfURL:[NSURL URLWithString:url]
encoding:NSUTF8StringEncoding
error:nil];
NSString * targetURL;
if (testString != NULL){
// Find the string
NSRange rangeOfTargetString = [testString rangeOfString:tString options:comparisonOptions];
t = [NSDate timeIntervalSinceReferenceDate];
if(rangeOfTargetString.location != NSNotFound) {
// Adjust range to take the line takes URL
NSRange cutRange = {rangeOfTargetString.location - cutStringValueToGetTheAddress, cutStringValueToGetTheAddress};
// Line which takes URL
NSString * lineContainsURL = [testString substringWithRange:cutRange];
NSRange rangeStartOfURL = [lineContainsURL rangeOfString:@"href"];
NSRange rangeEndOfURL = [lineContainsURL rangeOfString:@"onclick"];
NSRange targetRangeOfURL = {rangeStartOfURL.location + 6 ,((rangeEndOfURL.location - 2) - (rangeStartOfURL.location + 6)) };
targetURL = [lineContainsURL substringWithRange:targetRangeOfURL];
}
return targetURL;
}
else
return @"Reading url error";
}
, который работает нормально, но когда я проверить время работы каждой функции в «searchCoupang 'такие, как
NSString *testString = [NSString stringWithContentsOfURL:[NSURL URLWithString:url]
encoding:NSUTF8StringEncoding
error:nil];
и
if (testString != NULL){
// Find the string
NSRange rangeOfTargetString = [testString rangeOfString:tString options:comparisonOptions];
t = [NSDate timeIntervalSinceReferenceDate];
if(rangeOfTargetString.location != NSNotFound) {
// Adjust range to take the line takes URL
NSRange cutRange = {rangeOfTargetString.location - cutStringValueToGetTheAddress, cutStringValueToGetTheAddress};
// Line which takes URL
NSString * lineContainsURL = [testString substringWithRange:cutRange];
NSRange rangeStartOfURL = [lineContainsURL rangeOfString:@"href"];
NSRange rangeEndOfURL = [lineContainsURL rangeOfString:@"onclick"];
NSRange targetRangeOfURL = {rangeStartOfURL.location + 6 ,((rangeEndOfURL.location - 2) - (rangeStartOfURL.location + 6)) };
targetURL = [lineContainsURL substringWithRange:targetRangeOfURL];
}
работает несколько миллисекунд, но когда Я проверяю в нужное время после того, как функции, которые требуют время «searchCoupang» отсроченных несколько секунд
for (NSString * e in title) {
// start to check the time
NSString * addr = [self searchCoupang:coupangURL targetString:e];
// End checking time (takes few seconds)
self.myTextView.text = addr;
}
Где эта задержка взялась?
Спасибо,
+1. Я не думаю, что OP понимает, что '-stringWithContentsOfURL:' выполняет синхронное «NSURLConnection» от его имени. –
Фактически загруженный размер файла html огромен, но когда я проверяю его с небольшим размером html-файла (с URL-адресом), его время почти такое же, поэтому я думаю, что это не проблема размера данных downlonding. Но проблема с подключением к URL-адресу. И когда я повторяю 3 ~ 4 раза, это происходит быстро. Будет ли это потому, что он сохраняет файлы? –
Да, это может быть кеширование файлов в какой-то момент процесса. –