SORU
30 Aralık 2011, Cuma


ARC ile UUID bir dize oluşturmak etkin

ARC ile bazı kod UUID bir dize etkin oluşturmanı istiyorum.

Biraz araştırma yaptıktan sonra bu ben ile geldi budur:

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

Düzgün __bridge_transfer ARK altında herhangi bir nesne sızmasını önlemek için kullanıyor muyum?

CEVAP
6 Mayıs 2012, Pazar


Bana iyi göründü. Bu ne kullanın (gist kullanılabilir)

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

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

    return uuidString;
}

Eklemek için düzenlenebilir

OS X 10.8 veya iOS 6 NSUUID yeni sınıf dizesi bir UUID oluşturmak için, Temel için gitmek zorunda kalmadan kullanabilirsiniz:

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

Ama çoğunlukla, eğer sadece bir dosya veya dizin adı için benzersiz bir dize oluşturmak için NSProcessInfo'globallyUniqueString s yöntemi gibi kullanabilirsiniz

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

Resmi bir UUID değil, ama ağ ve süreç için eşsiz ve pek çok vaka için iyi bir seçimdir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BiGSH0TROB

    BiGSH0TROB

    7 NİSAN 2011
  • How To Cook That

    How To Cook

    16 NİSAN 2011
  • Kai Moosmann

    Kai Moosmann

    5 Temmuz 2006