Я сейчас использую функцию, которая возвращает NSString после поиска по html, код
- (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;
}
ГдеОткуда эта задержка?
Спасибо,