[英]Is self retained within this Objective-C block?
當我在Objective-C中有一個塊看起來像這樣:
self.request = [[ASIHTTPRequest requestWithURL:...
[self.longPollRequest setCompletionBlock:^{
NSLog(@"%@", self.request.responseString);
}];
它會保留self
還是明確地保留self.request
?
在引用計數環境中,默認情況下,當您引用塊中的Objective-C對象時,它將被保留。 即使您只是引用對象的實例變量也是如此。 但是,不保留使用__block存儲類型修飾符標記的對象變量。
如果在方法的實現中使用塊,則對象實例變量的內存管理規則更加微妙:
如果通過引用訪問實例變量,則保留self;
如果按值訪問實例變量,則保留變量。
你在塊中引用self
,所以保留self
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.