UUIDを生成して揮発型のIDを作る & CoreFoundationとのオブジェクトのやりとり
揮発型のIDの種としてUUIDを生成する
// UUIDを生成する
+ (NSString*) createUUID
{
CFUUIDRef obj = CFUUIDCreate(kCFAllocatorDefault);
NSString* uuid = (__bridge_transfer NSString*)CFUUIDCreateString(kCFAllocatorDefault, obj);
CFRelease(obj);
return uuid;
}
CoreFoundationとのオブジェクトのやりとり
ARC下でCoreFoundationとObjective-Cでオブジェクトやりとりする時には、それぞれcastが必要
__bridge_transfer
CF -> Obj-Cの時のキャスト。 CF側の参照カウントを-1してくれる。そのままだとCFReleaseが行われない限りCF側の参照カウントが残ったままとなる。
__bridge_retained
Obj-C -> CFの時のキャスト。 CF側の参照カウントを+1する。これをしないとObj-C側で参照カウントが-1された時に、オブジェクトが消滅する可能性がある。