7

GitHub の REActivityViewController プロジェクトで奇妙なコード行を見つけましたが、理解できません。宣言されている正確なクラスに値をキャストすることは避けているようですが、なぜそれが必要なのかわかりません。なんとなく継承に大事なのかな。

なぜこれが行われるのか、誰でも説明できますか?

__typeof(&*self) __weak weakSelf = self;

https://github.com/romaonthego/REActivityViewController/blob/master/REActivityViewController/REPocketActivity.m

このように宣言することで、これをより明確にします...

id __weak weakSelf = self;

そして、ブロック内でそれを強い参照として再宣言できます。

REPocketActivity* __strong strongSelf = (REPocketActivity*)weakSelf;

次にstrongSelf、ブロック内で使用します。範囲外になると、強い参照を安全に削除します。

4

2 に答える 2