いくつかのUIButtonを画面の外に移動しましたが、サブビューを通過するときにそれらを列挙することができます。スクリプトを高速化するためにそれらを「リリース」したいのですが、iOSでARCを使用してそれを行うにはどうすればよいですか?
4 に答える
ARCを使用している場合、オブジェクトを「解放」するために必要なのは、オブジェクトへのすべての参照をに設定することだけnil
です。
あなたの場合、これらすべてをUIButton
配列またはどこかに保持していない限り、画面外にあるときにスーパービューから削除するだけで済みます。もちろん、再度必要になった場合は、後で再度追加する必要があります
ARCでは、CoreFoundationオブジェクトを保持および解放することはできますが、dealloc、release、またはretainを呼び出すことはできません。残念ながら、ARCを使用している場合、オブジェクトを手動で解放することはできません。弱い参照オブジェクトまたは強い参照オブジェクトを試しましたか?
ボタンの数が非常に多い場合、または列挙ブロックにボタンごとに大量の時間がかかる場合を除いて、パフォーマンスに影響が出るとは思えません。
とにかく、あなたはそれのスーパービューから任意の要素を削除することができます...
[view removeFromSuperView];
すべての回答に感謝しますが、私の質問に対する正解(インスタンスオブジェクトのリリースで。それを質問に入れるべきでした...ごめんなさい)は次のとおりです。
for (int x =0; x<[toBeDeletedArray count]; x++) {
UIButton* __weak butt = (UIButton*)[toBeDeletedArray objectAtIndex:x];
[butt removeFromSuperview];
butt = nil;
}
重要な点は、それを「__weak」と宣言することです。その後、nilに設定できます。
すべてのインスピレーションをありがとう!