7

SO には、CFUUID に関する良い例がいくつかあります。

iPhone SDK を使用して GUID/UUID を作成する方法

しかし、それはARC以前のコード用に作成されたものであり、私は(まだ)CFジャンキーではないので、誰かがARCで動作するサンプルコードを提供できますか?

+ (NSString *)GetUUID
{
  CFUUIDRef theUUID = CFUUIDCreate(NULL);
  CFStringRef string = CFUUIDCreateString(NULL, theUUID);
  CFRelease(theUUID);
  return [(NSString *)string autorelease];
}
4

3 に答える 3

23

「ブリッジ転送」が必要な場合:

+ (NSString *)GetUUID
{
  CFUUIDRef theUUID = CFUUIDCreate(NULL);
  CFStringRef string = CFUUIDCreateString(NULL, theUUID);
  CFRelease(theUUID);
  return (__bridge_transfer NSString *)string;
}

ARCガイドへの移行は言う

__bridge_transferまたはCFBridgingRelease()、Objective-C 以外のポインターを Objective-C に移動し、所有権を ARC に転送します。

しかし!メソッドの名前も変更する必要があります。ARC はメソッド名の規則を使用して保持カウントを判断します。Cocoa で始まるメソッドにはget、データを格納するためにバッファを渡すという特定の意味があります。またはUUIDbuildUUIDの使用を説明する別の単語:pizzaUUIDまたはbearUUID.

于 2012-05-07T03:33:01.767 に答える
0

一発ギャグ:

NSString *UUID = CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, CFUUIDCreate(NULL)));
于 2014-04-03T13:44:48.780 に答える