據我所知,ARC中的__block保留該變量。當ARC中的變量是__block和__weak時,這意味着什麼?
__block __weak id observer = [[NSNotificationCenter defaultCenter] addObserverForName:MPMoviePlayerPlaybackDidFinishNotification object:player queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification* notif){
// reference the observer here. observer also retains this block,
// so we'd have a retain cycle unless we either nil out observer here OR
// unless we use __weak in addition to __block. But what does the latter mean?
}];
但是我有麻煩解析這樣的:一個塊內訪問時一個變量的變量已被分配之前,如在本然後可以使用。如果__block
導致觀察者被該塊保留,那麼有效的強弱是什麼意思? __weak
在這裏做什麼?
''observer'將被初始化,而塊將被複制,因此無論如何您都不能在塊內引用它。 – beefon
'__weak' +'__block'表示該變量是弱引用的,可以通過在該塊中執行的代碼進行更改。 – beefon
第一條評論並不完全正確,如果您知道在分配完成之前該塊不會執行,您可以參考它。 (另見8477629) – Aaron