我有一個NSString的類別類。正確橋接ARC?
@implementation NSString (URLEncode)
- (NSString *)URLEncodedString
{
__autoreleasing NSString *encodedString;
NSString *originalString = (NSString *)self;
encodedString = (__bridge_transfer NSString *)
CFURLCreateStringByAddingPercentEscapes(NULL,
(__bridge CFStringRef)originalString,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
return encodedString;
}
我是否使用ARC和新LLVM的正確橋接傳輸?
原始代碼:
- (NSString *)URLEncodedString
NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)self,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
return [encodedString autorelease];
}
謝謝你 - 這非常有幫助。我只是想確保我對文檔的理解能夠正確應用。 –
我可以補充一點,使用CFBridgingRelease()宏可以使CFType對象的傳輸和消費更容易閱讀 - 至少在我眼中。例如'NSData * imageData = CFBridgingRelease(ABPersonCopyImageData(person))' – monkeydom