0

何が問題なのか想像もつきません。私はかなりのアプリを作成し、「レンダリング」には CALayers のみを使用することにしました。

位置プロパティの変更がアニメーション化されるのを見たとき、アニメーション化せずに位置を設定するために、tanCenter と呼ばれるカスタムの getter-setter "abstract" プロパティを実装することにしました。

-(void) setTanCenter: (CGPoint) sentCenter
{   
    //Remove any transactions.
    [CATransaction begin];
    [CATransaction setValue:(id)kCFBooleanTrue forKey:kCATransactionDisableActions];
        //Set position.
        self.position = sentCenter;
    [CATransaction commit];

    //Set value.
    tanCenter = sentCenter;
}
-(CGPoint) tanCenter { return tanCenter; }

これをプロジェクトにマージしたので、「理解できる」(私にとって) エラー メッセージなしでクラッシュします。「範囲外」のものだけが表示されます。この tanCenter プロパティ NSLog-ged をクラッシュせずに取得することさえできません。

助けて、オビ=ワン・ケノービ。あなたは私の唯一の希望です。

4

2 に答える 2

0

デバッガー (Command-Y) で実行し、グローバル ブレークポイントが有効になっていることを確認すると、クラッシュが発生した場所でデバッガーが停止し、何が nil または過剰に解放されているかがわかります。

于 2010-01-19T05:55:16.180 に答える
0

ねえ、私は今まで同じ問題を抱えていました。最後に、2 週間のバグ追跡を調査した結果、自分のバグを見つけました (本当に最悪です) 。

たぶん私の問題があなたを助けます:

別のビューをクリックすると開くTableViewから始めました。だから私はで作成しました:

-(void)tableView:didSelectRowAtIndexPath:

最初に他のビューのコントローラーを作成し、グローバル変数の値を設定します:

SomeView *dtview = [[SomeView alloc] initWithNibName:@"SomeView" bundle:nil];
dtview.lblTitle = cl.textLabel.text; // cl is the cell
[self presentModalViewController:dtview animated:NO];
[dtview release];

したがって、他のビューを開き、多くのメモリ使用量で多くの機能を実行しました:)

その後、他のビューを閉じてテーブルに戻り、何度かスクロールすると、アプリは「範囲外」というメッセージで終了します

私は本当に、本当に長い間検索して、その効果が何であるかを見つけました. 他のビューが解放されると、最初の表のテキストも解放されるようです。

通話にコピーを入れた後、それは私のために働いた:

dtview.lblTitle = [cl.textLabel.text copy];

int と bool の場合、これらはオブジェクトではないため、最初のソリューションは正常に機能しますが、NSObject の場合は値を別のビューにコピーする必要があります。

于 2010-01-21T13:55:20.157 に答える