Tengo una clase de categoría para NSString.¿Puenteo correcto para 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;
}
¿Estoy utilizando las transferencias de puente correctas para ARC y el nuevo LLVM?
El código original:
- (NSString *)URLEncodedString
NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)self,
NULL,
(CFStringRef)@"!*'();:@&=+$,/?%#[]",
kCFStringEncodingUTF8);
return [encodedString autorelease];
}
Gracias, esto ayudó inmensamente. Solo quería asegurarme de que mi comprensión de los documentos se aplicaba correctamente. –
Podría agregar que el uso de la macro 'CFBridgingRelease()' hace que la transferencia y el consumo de objetos CFType sea mucho más fácil de leer, al menos en mi opinión. p.ej. 'NSData * imageData = CFBridgingRelease (ABPersonCopyImageData (persona))' – monkeydom