Tig*_*ing 7 iphone objective-c ios automatic-ref-counting
关于CFUUID的SO有几个很好的例子,特别是这个:
但它是为ARC之前的代码而制作的,而且我还不是CF迷(还),那么有人可以提供适用于ARC的示例代码吗?
+ (NSString *)GetUUID
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return [(NSString *)string autorelease];
}
Run Code Online (Sandbox Code Playgroud)
Jos*_*ell 23
你想要一个"桥接转移":
+ (NSString *)GetUUID
{
CFUUIDRef theUUID = CFUUIDCreate(NULL);
CFStringRef string = CFUUIDCreateString(NULL, theUUID);
CFRelease(theUUID);
return (__bridge_transfer NSString *)string;
}
Run Code Online (Sandbox Code Playgroud)
在过渡到导弧说
__bridge_transfer或者CFBridgingRelease()将非Objective-C指针移动到Objective-C,并将所有权转移到ARC.
但是!您还应该重命名您的方法.ARC使用方法名称约定来推断保留计数,并且get以Cocoa 开头的方法具有特定含义,包括传入缓冲区以使其填充数据.一个更好的名称将是buildUUID或描述UUID使用的另一个词:pizzaUUID或bearUUID.
假设您此时不再需要支持6.0之前的iOS,您可以跳过所有Core Foundation UUID的内容,只需执行以下操作即可获得新的内容:
NSString * uuidStr = [[NSUUID UUID] UUIDString];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6875 次 |
| 最近记录: |