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

  • Besnik Ibrahimi

    Besnik Ibrah

    27 Mart 2010
  • LounaTutorials

    LounaTutoria

    10 EYLÜL 2009
  • williamfitzsimmons

    williamfitzs

    14 Mart 2008