1

OCMock と UIView に問題があります。

私はこのコードのようなものを持っています:

UIView *view1 = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, 10)];
id view1Mock = [OCMockObject partialMockForObject:view1];

[[[view1Mock expect] andForwardToRealObject] removeFromSuperview];

... something ...

[view1Mock verify];

そして、[[[view1Mock expect] andForwardToRealObject] removeFromSuperview] で EXC_BAD_ACCESS が頻繁に発生します。しかし、毎回ではありません。OCMock の行まで追跡できず、毎回発生するわけではないため、非常に面倒です。

何か案が?

編集:

ARC を有効にした新しい Apple LLVM 3.0 コンパイラを使用していますが、それが理由かもしれません。しかし、私はそれを修正したいと思います。ARC で OCMock をコンパイルしようとした人はいますか?

よろしくお願いします、ダニエル

4

2 に答える 2

1

「removeFromSurperview」は UI メソッドなので、メイン スレッドで実行する必要があるかもしれません。

よろしく、

于 2011-12-08T11:14:47.507 に答える
1

時々表示される行はEXC_BAD_ACCESS、問題の原因の手がかりになる可能性があります。定かではありませんが。問題のあるコードは別の場所にある可能性があります。

確かに、上記のコードは問題ないように見えます。後である時点でreleaseonを実行している限り。view1

UI 操作はメイン スレッドで実行する必要があります。ただし、それによってEXC_BAD_ACCESSまたはその他の明示的な例外が発生することはありません。

したがって、問題の根本原因を見つけるための最初のステップは、Analyzer を実行することです。次に、Instruments の Leaks ツールを使用します。

詳細については、これらのエラーの原因に関する優れたリンクと、それらを修正するための段階的な手順について、これらの質問に対する回答をご覧ください。

EXC_BAD_ACCESS の理由を見つける - Xcode4 で

あり得ない場所でランダムEXC_BAD_ACCESS

于 2011-12-08T11:46:47.573 に答える