私はさまざまなコントロールを持つフォームを持っています。これらのコントロールの1つを使用すると、コントロールをタップした後に表示されるモーダルビューを使用して、送信されるフォームのカテゴリを変更できます。ユーザーがフォームのカテゴリを変更するための選択を行うと、フォームは新しいカテゴリに基づいてコントロールを再表示する必要があります。ARC使用時のプロパティの再割り当て
フォームのビューから以前のコントロールを削除する以外に、破棄されているコントロールに関して心配する必要があるものはありますか?フォームが実装され、以下の方法を考えてみましょう:私は、このメソッドを複数回呼び出す場合(ユーザーがフォームのカテゴリを変更するため、前述のように、)
- (void)showControls
self.controls = [NSMutableArray array];
for(UIControl *control in self.dataSource.controls){
[self.controls addObject:control];
[self.view addSubview:control];
}
}
、私はそれが任意のポインタをせずに漂っ様々なNSMutableArraysになり前提としていますそれらを参照してください。これは大丈夫ですか?私はARCを使用しているので、自動的にそれらの "失われた"配列を収集しますか?
私は私のポストの最後にミスを犯しました。 「収集する」とは、ガベージコレクタを参照することを意味しました。もし私がセッターから 'controls'にアクセスせず、プロパティに直接代入しただけでは(つまり' controls = [NSMutableArray array] ')?それは間違いなくARCのないメモリリークを引き起こしますが、それについてはどうですか? – maxedison
ARCにガベージコレクタはありません - 残念ながら、私はあなたがまだ収集していることを意味するものではありません。しかし、あなたが言うことは、ARCなしで直接ivarにアクセスすると、本当に漏れているか、正しく保持されていない可能性がありますが、ARCでは起こりません。 – mattjgalloway
申し訳ありませんが私の専門用語はオフです。私は実際には、ARCと直接割り当てを使用するときに、これらのオブジェクトが正しくリリースされるかどうかを確認しようとしています。その質問に答えました。ありがとう! – maxedison