通常、weak
参照は、アプリケーション オブジェクト グラフでの保持サイクルを回避するために使用されます。私はその部分を理解しています。ここで、さらに一歩進んで、それらが内部でどのように機能するかを理解したいと思います。
少し検索すると、__weak
修飾子を使用しているときに、その修飾子に関連付けられた変数が自動解放プールに登録されると読みましたが、これはどういう意味ですか? オブジェクトがプールに登録されているのはなぜですか? どのようなタイプのプールが使用されていますか? それはメインプールですか、それとも特別に作成された他のプールですか?
このコードを使用すると:
id _weak myWeakObj = [[NSObject alloc] init];
コンパイラは、次の方法で修正できる警告を表示します。
id _strong myStrongObj = [[NSObject alloc] init];
id _weak myWeakObj = myStrongObj;
では、前の質問に基づいて、 によって参照されるオブジェクトはどうなりますmyStrongObj
か? 可能であれば、コンパイラのコードがどのようなものか知りたいですか?