0

iOSアプリでテストを行っています。setUp メソッドに次のコードがあります。

- (void)setUp
{
    [super setUp];
    rest=[[Restaurant alloc]init];
    array=[[NSMutableArray alloc]init];
    array=[rest getTheWebData];

}

成功した配列の最初のテストケースを実装します。

- (void)testDataArray_Should_Not_Nil
{
        STAssertNotNil(array,@"array is nil");



}

実装が同じである配列のテストケースを次のようにした直後:

-(void)testResult_Should_Be_Valid_Category_For_Given_Node
{

    STAssertNotNil(array,@"array is nil");
}

このテスト ケースは、null 配列が原因で失敗しています。最初のケースを通過するとすぐに 2 番目のケースで null を取得するのはなぜですか?

4

1 に答える 1

0

配列は、自動解放された配列を返すと思われるgetTheWebDataメソッドによって返されるオブジェクトを指しているため、setUpメソッドの終了後に配列が解放される可能性があります。最初に行ったallocinitは無意味であり、次の行で配列を再度割り当てるため、リークが発生します。それを行うための最良の方法はこれです:

array=[[rest getTheWebData] retain];

ARCを使用していないと思います

于 2012-06-15T11:07:49.837 に答える