私はいくつかのUIViewサブクラス(ボタン、ラベルなど)を以下の設定パターンに従います。私の質問は、release
の後にメッセージがまだUILabel
に送信できるのはなぜですか?彼らは新しいUIViewのが「所有」しているリリースされたオブジェクトにメッセージを送信しますか?
myLabel = [[UILabel alloc] initWithFrame:someFrame];
[someUIView addSubview:myLabel];
[myLabel release];
myLabel.textAlignment = UITextAlignmentCenter;
// other property changes to myLabel
、私は考えますが、release
がそれに元のオブジェクトとすることにより、すべてのメッセージを破壊しない理由を私は理解していません。私はsomeUIView
のsubViews
を通して財産の変更をしていません。私は不平を言っていません。私は理由を理解しようとしています。
EDIT:私は、これらがインスタンス変数であり、違いがある場合は追加する必要があります。ラベルはまだ発売されていなかったので、彼らはおそらく以前に保持されているので
完璧!ありがとう!他のメソッドが暗黙的に呼び出しを呼び出すとき、どうすればわかりますか?私が知っておくべきリストがありますか? (NSObjectのretainCountを見ている以外は) –
オブジェクトを解放した後、それを使用しないでください。 – zaph
短い答えは...心配しないでください。確かに、私は '-addSubview:'がオブジェクトに対してretainを実行することを知っていますが、必ずしも必要ではありません。 'retainCount'に関しては、気にしないでください。真剣に。それは狂気につながる実装の詳細です。 –