2016-02-17 3 views
0

Например, у меня есть следующий контроллер:ли геттер над свойством сохранения себя от захвата внутри блока

class MyController : UIViewController 
{ 
    var capturedProperty : Property? 

    func getterForCapturedProperty() -> Property? 
    { 
     return capturedProperty 
    } 

    func viewDidAppear() 
    { 
     NetworkOperationBlock{ 
      someResult -> Void in 

      self.getterForCapturedProperty().result = someResult 
     } 
    } 
} 

сейчас, хотя я полагаю, что делает поглотитель на имущество не должно влиять ли захватывается самостоятельно или нет, но все же я не уверен.

Может ли кто-нибудь дать краткое объяснение этому примеру?

ответ

1

Нет, это не влияет на захват.

Если вы не хотите, чтобы блок, чтобы иметь сильную ссылку на self, вы должны пометить его бесхозным:

let myBlock: /* type */ = { [unowned self] in 
    // ... 
} 

Дополнительная информация: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html (прокрутите вниз до «Разрешающая Сильные Эталонные Циклы для затворов») ,