ARCを有効にしてUUID文字列を生成する 質問する

ARCを有効にしてUUID文字列を生成する 質問する

ARC を有効にしたコードで UUID 文字列を生成する必要があります。

調査した結果、次のような結論に至りました。

CFUUIDRef uuid = CFUUIDCreate(NULL);
NSString *uuidStr = (__bridge_transfer NSString *)CFUUIDCreateString(NULL, uuid);
CFRelease(uuid);

__bridge_transferARC の下にあるオブジェクトの漏洩を防ぐために、正しく使用していますか?

ベストアンサー1

私には良さそうです。私が使っているのはこれです(要旨

- (NSString *)uuidString {
    // Returns a UUID

    CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault);
    NSString *uuidString = (__bridge_transfer NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuid);
    CFRelease(uuid);

    return uuidString;
}

追加編集

OS X 10.8またはiOS 6をお使いの場合は、新しい非SUUIDCore Foundation にアクセスせずに文字列 UUID を生成するクラス:

NSString *uuidString = [[NSUUID UUID] UUIDString];
// Generates: 7E60066C-C7F3-438A-95B1-DDE8634E1072

しかし、ほとんどの場合、ファイル名またはディレクトリ名に一意の文字列を生成したいだけであれば、次のように のメソッドを使用できNSProcessInfoますgloballyUniqueString

NSString *uuidString = [[NSProcessInfo processInfo] globallyUniqueString];
// generates 56341C6E-35A7-4C97-9C5E-7AC79673EAB2-539-000001F95B327819

これは正式な UUID ではありませんが、ネットワークとプロセスに固有のものであり、多くの場合に適しています。

おすすめ記事