1

したがって、クラスAで配列を作成して入力しています-次に、クラスBIでクラスAのメソッドを呼び出して配列を取得します

ClassA.h

-(NSMutableArray*)getArray

ClassA.m

-(NSMutableArray* )getFeedsArray
{
    NSMutableArray *myArray;
    if (!myArray)
        {
        myArray = [[NSMutableArray alloc]init];
        [myArray addObject: @"hello"];
        }


    NSLog (@"Feeds array: %d", [myArray count ]);

    return myArray;

}

}

次にクラスBで-私はこれを行います:

ClassB.m

-(void)loadData
{

    ClassA *classA = [[ClassA alloc]init];

         NSMutableArray *mutableArray = [classA getFeedsArray];

           NSLog (@"Items in Array: %d", [mutableArray count]);
}

上記は完全に機能します-配列カウントは1を示します。これは、テストが行​​うべきことです。

ただし、これを行うと:

クラスA.m

-(NSMutableArray* )getFeedsArray
{


    NSLog (@"Feeds array: %d", [feedsDownload count ]);

    return feedsDownload; 

}

カウントはゼロです。

そこで、 getFeedsArray メソッドが呼び出される前に呼び出される ClassA.m 内の別のメソッドで feedDownload 配列をチェックし、そのメソッドから正しい値を返します。

ただし、 getFeedsArray が ClassB.m から呼び出されると、配列カウントはゼロになります。しかし、getFeedsArray コードの 2 番目のバージョンではゼロにすぎません。

したがって、これを行い、他のコードに触れない場合:

-(NSMutableArray* )getFeedsArray
{
    NSMutableArray *myArray;
    if (!myArray)
        {
        myArray = [[NSMutableArray alloc]init];
        [myArray addObject: @"hello"];
        }


    NSLog (@"Feeds array: %d", [myArray count ]);

    return myArray;

}

結果: Feeds 配列: 1 (ClassA.m otherMethod から) - otherMethod は getFeedsArray メソッドを呼び出します。Feeds array:1 Array 内の項目: 1 (ClassB.m 内)

次に、次のようにコードを変更すると:

-(NSMutableArray* )getFeedsArray
{
    NSLog (@"Feeds array: %d", [feedsDownload count ]);

    return feedsDownload; 

}

結果: Feeds array:1 (ClassA.m otherMethod から) - otherMethod は getFeedsArray メソッドを呼び出します。Feeds array:0 Array 内の項目: 0 (ClassB.m 内)

そのため、getFeedsArray の 2 回目の呼び出しで、配列のカウントがゼロになったようです。

申し訳ありませんが、ここで WTH が行われていますが、何が足りないのでしょうか??

ありがとう!

4

0 に答える 0