Düzeltme uyarı "bu bloğu korumak döngüsü bir " yol açması kaçınılmazdır [nesne] şiddetle Yakalama; ARC özellikli kod
ARC kod etkin, potansiyeli hakkında bir uyarı düzeltmek için nasıl blok-tabanlı bir API kullanırken döngüsü korumak?
Uyarı:
Capturing 'request' strongly in this block is likely to lead to a retain cycle
bu kod parçacığını tarafından üretilen:
ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:...
[request setCompletionBlock:^{
NSDictionary *jsonDictionary = [[CJSONDeserializer deserializer] deserialize:request.rawResponseData error:nil];
// ...
}];
Uyarı nesne bloğu içinde 5 ** kullanımına bağlı.
CEVAP
Kendime cevap:
Belgelere anlayışım anahtar kelime block
kullanma ve blok içinde kullandıktan sonra sıfıra değişken ayarı Tamam olması gerektiğini söylüyor, ama yine de uyarı gösterir.
__block ASIHTTPRequest *request = [[ASIHTTPRequest alloc] initWithURL:...
[request setCompletionBlock:^{
NSDictionary *jsonDictionary = [[CJSONDeserializer deserializer] deserialize:request.responseData error:nil];
request = nil;
// ....
}];
Güncelleme:bu anahtar sözcük '_ . ile çalışmak zorunda ^em>'yerine' . zayıf _block' ve geçici bir değişken kullanarak:
ASIHTTPRequest *_request = [[ASIHTTPRequest alloc] initWithURL:...
__weak ASIHTTPRequest *request = _request;
[request setCompletionBlock:^{
NSDictionary *jsonDictionary = [[CJSONDeserializer deserializer] deserialize:request.responseData error:nil];
// ...
}];
Ayrıca 9 ** __weak
yerine 4 iOS hedeflemek istiyorsanız. Aynı davranış, ancak işaretçi otomatik olarak nesne yok olduğunda sıfıra ayarlanmış yerine asılı kalır.
Böyle büyük mükafat uyarı: "Birde...
&; "Uyarı: iPhone uygulamaları armv6 m...
PHP: "Uyarı: Tanımsız değişken&qu...
karınca uyarı: &;'' ayarlanm...
Visual Studio derleme hatası düzeltme,...