这两者有什么不同:[[NSUUID new] UUIDString] 和 CFUUIDRef?

3
有人能告诉我以下两种实现方式创建唯一标识的区别吗?

1)

  CFUUIDRef cfuuid = CFUUIDCreate(kCFAllocatorDefault);
    NSString *udidString = (NSString*)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, cfuuid));

2) NSString *guid = [[NSUUID new] UUIDString];

在我正在开发的iOS 8及以上版本应用中,哪种方法更可靠?

3个回答

2
您可以在NSHipster的uuid-udid-unique-identifier帖子中找到详细信息。
为了避免发布“仅链接”的答案,以下是相同文章的摘录:
NSUUID在iOS 6中添加到Foundation中,作为轻松创建UUID的一种方式。
然而,如果您的应用程序针对iOS 5或更早版本,则必须使用CFUUIDRef上的Core Foundation函数。
总之,虽然两者都返回有效的UUID,但请使用NSUUID,因为它更容易。

感谢您的快速回复,我会使用相同的方式 :) - codelover

1

非常简单

1. 如果您的应用程序针对iOS 5或以下的iOS 5版本,则属于CoreFoundation,同时您需要设置

CFUUIDRef uuid = CFUUIDCreate(NULL);
NSString *UUID = CFUUIDCreateString(NULL, uuid);

2. 如果您的应用程序面向 iOS6 或以上版本的 iOS 6,则它属于 Foundation,您需要进行设置。

NSString *UUID = [[NSUUID UUID] UUIDString];

1

NSUUID 在 iOS 6 中被添加到 Foundation 框架中,用于轻松创建 UUID。

CFUUIDRef 是 Core Foundation 函数。如果你的应用程序目标是 iOS 5 或更早版本,则应使用此函数。

因此,对于iOS 8及以上版本,出于简单和方便的考虑,应该使用NSUUID


谢谢您的快速回复,我会使用相同的方式 :) - codelover
非常乐意帮忙:)。您能否接受这个答案呢? - Abhinav

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接