簡體   English   中英

自我保留在這個Objective-C塊中嗎?

[英]Is self retained within this Objective-C block?

當我在Objective-C中有一個塊看起來像這樣:

self.request = [[ASIHTTPRequest requestWithURL:...

[self.longPollRequest setCompletionBlock:^{
    NSLog(@"%@", self.request.responseString);
}];

它會保留self還是明確地保留self.request

正如Block Programming Topics所說:

在引用計數環境中,默認情況下,當您引用塊中的Objective-C對象時,它將被保留。 即使您只是引用對象的實例變量也是如此。 但是,不保留使用__block存儲類型修飾符標記的對象變量。

如果在方法的實現中使用塊,則對象實例變量的內存管理規則更加微妙:

如果通過引用訪問實例變量,則保留self;

如果按值訪問實例變量,則保留變量。

你在塊中引用self ,所以保留self

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM