Created
April 22, 2017 05:04
-
-
Save ezura/9acc2f66405840abb3acbbeea513a68e to your computer and use it in GitHub Desktop.
strong var で参照が 2 増える件
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
do { | |
let obj2 = NSObject() | |
CFGetRetainCount(obj2) // 2 | |
let test = { CFGetRetainCount(obj2) } | |
CFGetRetainCount(obj2) // 3 | |
test() // 4 | |
CFGetRetainCount(obj2) // 3 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
これは個人的な推測なので信頼度低めで捉えて欲しいのですが、スコープ的なものが 1 保持してそうだと思いました。
理由
4 行目で
obj2
が closure にキャプチャされて 1 カウントが増えます。(5 行目の 3 のとこ)closure の実行時に closure 内部でのカウントがさらに 1 増えて 4 になっています。
この 4 (1 増えてる)を見て、スコープ(とよんでいいのか謎ですが)がキャプチャしてるのではないかと思いました。
スコープを抜けると、1 減ってまた 3 に戻っています。