SORU
25 Temmuz 2011, PAZARTESİ


Doğru ARC için köprü?

NSString için kategori Dersim var.

@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 ve yeni LLVM için doğru bir köprü transferler mi kullanıyorum?

Orijinal kodu:

- (NSString *)URLEncodedString
    NSString *encodedString = (NSString *)CFURLCreateStringByAddingPercentEscapes(NULL,
                                (CFStringRef)self,
                                NULL,
                                (CFStringRef)@"!*'();:@&= $,/?%#[]",
                                kCFStringEncodingUTF8);
    return [encodedString autorelease];
}

CEVAP
25 Temmuz 2011, PAZARTESİ


Açıklamalarda belirtildiği gibi, güzel ARC ve Automatic Reference Counting içeriğini burada hakkında konuşmak olduğunu düşünüyorum.

__autoreleasing Bu şekilde kullanılmak üzere tasarlanmıştır. Dolaylı nesne başvurularını (**vb NSError) geçiş için kullanılır. 4.3.4 Passing to an out parameter by writeback bkz.

3.2.4 Bridged casts, CFURLCreateStringByAddingPercentEscapes işlevi __bridge_transfer doğru göre verir tutulan bir nesne ("oluştur" adını). ARC nesne eklemek ve bir serbest bırakma iade sahipliğini almak istiyorum (ya da bu durumda autorelease) bu dengelemek için.

originalstring __bridge dökme doğrudur, ARC bu konuda özel bir şey yapmak istemiyorum da.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bombjack2991

    bombjack2991

    29 HAZİRAN 2008
  • ExcelIsFun

    ExcelIsFun

    16 ŞUBAT 2008
  • PlugResearch

    PlugResearch

    22 Mart 2006