2013-11-15 76 views
0

通常,在塊中使用強引用(保留週期)時,Xcode顯示警告。但是,我不明白爲什麼它沒有用這個AFNetworking的例子顯示它。在AFNetworking成功塊中保留週期

UIImageView *imageView; 
AFHTTPRequestOperation *operation = [apiQueryManager HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, NSData *responseObject) { 
    UIImage *image = [UIImage imageWithData:responseObject]; 
    imageView.image =image; // <--- using strong ref to imageView ? 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"ERROR: %@", error); 
}]; 
[apiQueryManager enqueueHTTPRequestOperation:operation]; 

這裏是否存在保留週期?

回答

2

由於imageView,imageView需要保留週期,因此需要對其使用的塊有強烈的參考。不是這種情況。

+1

在你的例子Noe中,如果在塊中使用'operation',則會發生保留週期。 –

+0

好吧,我現在得到它:)謝謝你們兩個 順便說一句,我認爲AFNetworking給成功塊參數作爲弱引用(如果我沒有弄錯),所以,@ GuyKogus,將沒有保留週期? –

+0

保留週期通常發生在一個對象保留一個保留該對象的塊(我聽說這聽起來很混亂)。當你調用一個塊時,傳遞給它的參數不會保留在塊對象中(是的,塊是對象),所以沒有保留週期。 –