に割り当て解除インスタンスに送信されたメッセージ私はmySegmentedと呼ばれるこの特性を持って、このiphone - ブロック
.h
@property (retain) UISegmentedControl *mySegmented;
.m
@synthesize mySegmented = _mySegmented;
のように宣言、それは次のように作成されました:
self.mySegmented = [self createSegmented];
// createSegmented creates an autoreleased segmented control
私のアプリは、3種類のを持っていますセグメント化されたコントロール。一度に1つだけ表示されます。 私のアプリケーションのいくつかの時点で、私は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はそれがリークします文句を言います。
手がかりはありますか?
ありがとうございました。
。 [_mySegmented2リリース]; [_mySegmented3リリース];どのように私はそれをリリースすると思いますか? [self.mySegmented1 release]; ????????????? – SpaceDog
こんにちは、あなたの実装では '@synthesize mySegmented1 = _mySegmented1;'がうまく見えます。ビューコントローラが解放されたとき、これは、 'self.mySegmented1 = [[自己createSegmented]保持]あなたのオブジェクトを取得する際に、今あなたがしたい、これらのオブジェクトを解放します;' – Daniel
感謝を!!!!!!!!!!!! – SpaceDog