程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> cocoa touch-在ARC中會不會出現洩露?

cocoa touch-在ARC中會不會出現洩露?

編輯:編程綜合問答
在ARC中會不會出現洩露?

我使用ARC的時候在一個方法中分配操作對象。這樣會不會內存洩露?這樣的話怎麼設置nil?在一個塊內設置還是在[operation start];之後?

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    // 下載文件成功
    // 動作
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // 下載文件失敗
    // 動作
}];

[operation start];

最佳回答:


我知道了,不會洩露。不過有時在一個塊內引用operation會引起 retain cycle。不過API已經預估了並且傳遞了一個可用副本。因此可以假定操作塊是安全的引用。

如果在block內引用,聲明 unretained 副本。

__unsafe_unretainedBlockOwningClass *blockOwnerCopy= blockOwner;[blockOwner doBlock:^{  NSLog(@"%@", blockOwnerCopy); }];
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved