私は強い保持サイクルが可能であり、[weak/unowned self]
を使用するように私を必要とするとき、私は認識することができますどのように把握しようとしています。私は不必要に[weak/unowned self]
を使用して焼き尽くされており、私はそれを使用する機会を与える直前に自己割り当てを解除しました。非同期コールまたは静的コールでは、強力な保持サイクルはどのように可能ですか?
例えば、以下の閉鎖にself
を指す非同期ネットワーク呼び出しがあります。ネットワークコールが自己呼び出しを変数に格納せずに行われているので、ここでメモリリークが発生する可能性はありますか?
NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: url)!) {
(data, response, error) in
self.data = data
)
ここで呼び出しが、後に非同期的に行うことができNSNotificationCenter、使用して別の例です:私の質問はどのようなケースである
NSNotificationCenter.defaultCenter().addObserverForName(
UIApplicationSignificantTimeChangeNotification, object: nil, queue: nil) {
[unowned self] _ in
self.refresh()
}
を可能に強い保持サイクルのですか?クロージャーで自己を参照する非同期呼び出しまたは静的呼び出しを行っている場合、それは[weak/unowned self]
の候補になりますか?これについて何か光を発してくれてありがとう。