__bridge_transfer:释放对象转给(transfer)ARC处理。
__bridge_transfer 的主语是CF对象: CF对象 transfer 内存的管理权给ARC。
CF对象未用__bridge_transfer转为NS对象,则这个CF对象需要程序员用CFRelease来手工释放。
转换后就转由ARC来自动处理了。
不用__bridge_transfer时:
//valueCF对象是copy出来的,需要release。
CFStringRef valueCF =CFPreferencesCopyAppValue(CFSTR("1"),CFSTR("2"));
NSString *value = (__bridge NSString *)valueCF;
CFRelease(valueCF);
用__bridge_transfer时:
NSString *value = (__bridge_transfer NSString*)CFPreferencesCopyAppValue(CFSTR("1"),CFSTR("2"));
__bridge_transfer 的主语是CF对象: CF对象 transfer 内存的管理权给ARC。
CF对象未用__bridge_transfer转为NS对象,则这个CF对象需要程序员用CFRelease来手工释放。
转换后就转由ARC来自动处理了。
不用__bridge_transfer时:
//valueCF对象是copy出来的,需要release。
CFStringRef valueCF =CFPreferencesCopyAppValue(CFSTR("1"),CFSTR("2"));
NSString *value = (__bridge NSString *)valueCF;
CFRelease(valueCF);
用__bridge_transfer时:
NSString *value = (__bridge_transfer NSString*)CFPreferencesCopyAppValue(CFSTR("1"),CFSTR("2"));