1

を使用して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;
}
4

0 に答える 0