Czy w bloku który jest zwracany przez computed property powinienem stosować weak self? Mam klasę A, w której jest zdefinowane:
var defaultFinishBlock: ((NSURLSession, NSData?, NSURLResponse?, NSError?) -> ())? { return nil }
Klasy dziedziczące po A nadpisują defaultFinishBlock. Czy powinienem w definicjach tych bloków stosować weak self? Wydaje mi się, że nie, ponieważ jako że jest to computed property nie ma mowy o referencji do tego bloku, ale chciałem się upewnić. Przykładowo:
override var defaultFinishBlock: ((NSURLSession, NSData?, NSURLResponse?, NSError?) -> ())? {
return { [weak self, deviceToken] (session, data, response, error) in
...
}
}
Czy weak self jest tu zbędne? Chociaż z drugiej strony to jeśli przypiszę wartość tego do jakiejś innej zmiennej, to wtedy powstanie retain cycle tak? Np.
var ref = defaultFinishBlock
Prawdopodobnie coś takiego nie będzie miało miejsca, ale na wszelki wypadek pewnie lepiej zostawić weak self?
Użytkownik Damian Dudycz edytował ten post 12 marca 2016 - 09:59