Generate a UUID string with ARC enabled

后端 未结 3 798
春和景丽
春和景丽 2020-12-04 09:20

I need to generate a UUID string in some code with ARC enabled.

After doing some research, this is what I came up with:

CFUUIDRef uuid = CFUUIDCreate         


        
3条回答
  •  再見小時候
    2020-12-04 09:50

    Looks fine to me. This is what I use (available as a gist)

    - (NSString *)uuidString {
        // Returns a UUID
    
        CFUUIDRef uuid = CFUUIDCreate(kCFAllocatorDefault);
        NSString *uuidString = (__bridge_transfer NSString *)CFUUIDCreateString(kCFAllocatorDefault, uuid);
        CFRelease(uuid);
    
        return uuidString;
    }
    

    Edited to add

    If you are on OS X 10.8 or iOS 6 you can use the new NSUUID class to generate a string UUID, without having to go to Core Foundation:

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

    But mostly, if you just want to generate a unique string for a file or directory name then you can use NSProcessInfo's globallyUniqueString method like:

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

    It's not a formal UUID, but it is unique for your network and your process and is a good choice for a lot of cases.

提交回复
热议问题