を使用してNSDataDetector
、文字列からアドレスを取得しています。これを行うメソッドを約 500 回呼び出していますが、顕著な遅延が発生します (iPhone 4 では約 3 秒)。スピードアップする方法はありますか?セットアップに時間がかかると思って、データ検出器を静的変数に移動してみましたが、違いはありませんでした。コードは次のとおりです。
- (NSDictionary *)addressDetectorForString:(NSString *)address
{
if (!address) return nil;
static NSDataDetector *addressDetector = nil;
if (!addressDetector) {
addressDetector = [NSDataDetector dataDetectorWithTypes:NSTextCheckingTypeAddress error:nil];
}
NSDictionary *dictionary = nil;
NSArray* matches = [addressDetector matchesInString:address options:0 range:NSMakeRange(0, [address length])];
if ([matches count] > 0) {
for (NSTextCheckingResult *match in matches) { // Only ever one result.
if ([match resultType] == NSTextCheckingTypeAddress) {
dictionary = [match addressComponents];
}
}
}
return dictionary;
}