小编Eri*_*ric的帖子

NSRegularExpression:enumerateMatchesInString在多次调用时挂起

在我正在开发的iPhone应用程序的上下文中,我正在使用NSRegularExpression解析一些html来提取要映射的数据.只要用户将地图"平移"到新位置,就会更新此信息.

这在第一次或第二次通过时工作正常,但在第二次或第三次调用该函数时,应用程序挂起.我已经使用XCode的分析器来确认我没有泄漏内存,并且没有生成错误(应用程序没有终止,它只是在下面显示的位置执行).

当我检查正在解析的HTML时,我不会看到它在应用程序挂起时不完整或出现乱码.

此外,如果我用显式地址字符串的集合替换正则表达式代码,一切都按预期工作.

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
   // receivedData contains the returned HTML
   NSString *result = [[NSString alloc] initWithData:receivedData encoding:NSASCIIStringEncoding];
   NSError *error = nil;
   NSString *pattern = @"description.*?h4>(.*?)<\\/h4>.*?\"address>[ \\s]*(.*?)<.*?zip>.*?(\\d{5,5}), US<";
   NSRegularExpression *regex = [NSRegularExpression         
                              regularExpressionWithPattern:pattern
                              options:NSRegularExpressionDotMatchesLineSeparators
                              error:&error];
   __block NSUInteger counter = 0;
   // the application hangs on the next line after 1-2 times through
   [regex enumerateMatchesInString:result options:0 range:NSMakeRange(0, [result length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
       NSRange range = [match rangeAtIndex:2];
       NSString *streetAddress =[result substringWithRange:range];
       range = [match rangeAtIndex:3]; …
Run Code Online (Sandbox Code Playgroud)

regex objective-c ios4

11
推荐指数
1
解决办法
3925
查看次数

标签 统计

ios4 ×1

objective-c ×1

regex ×1