したがって、クラス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 が行われていますが、何が足りないのでしょうか??
ありがとう!