私はこのように宣言されたmySegmentedと呼ばれるこのプロパティを持っています
.h
@property (retain) UISegmentedControl *mySegmented;
.m
@synthesize mySegmented = _mySegmented;
すると、次のように作成されました。
self.mySegmented = [self createSegmented];
// createSegmented creates an autoreleased segmented control
私のアプリには 3 つの異なるセグメント化されたコントロールがあります。一度に 1 つだけ表示されます。アプリのある時点で、特定のセグメント化されたコントロールを非表示にする必要があるため、すべてのセグメント化されたコントロールの配列を構築して反復する必要があります...これはブロック内にあります。
[UIView animateWithDuration:0.8
animations:^{
NSArray *list = [NSArray arrayWithObjects:
self.mySegmented1,
self.mySegmented2,
self.mySegmented3,
nil];
for (UISegmentedControl *oneSeg in list) {
[oneSeg setAlpha:0.0f];
}
}];
何が起こるか: しばらくすると、このアレイを構築しようとしているときにアプリがクラッシュします。セグメント化されたコントロールの 1 つが何らかの形で割り当て解除されていると思います。コードで確認できる割り当て解除はありません。
私の質問は次のとおりです。作成中のこのアレイは自動解放されます。ブロックがアニメーションを終了するとどうなりますか? リリースはアレイの各メンバーに送信されますか?
セグメント化されたコントロールを作成した後に保持すると、Xcode はそれがリークすることを訴えます。
手がかりはありますか?
ありがとう。