1

所以我在 A 类中创建和填充一个数组 - 然后在 BI 类中调用 A 类的方法来获取数组

类A.h

-(NSMutableArray*)getArray

类A.m

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


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

    return myArray;

}

}

然后在 B 类 - 我这样做:

B类.m

-(void)loadData
{

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

         NSMutableArray *mutableArray = [classA getFeedsArray];

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

以上工作完美 - 数组计数显示 1,这是测试应该做的。

但是,当我这样做时:

课堂上

-(NSMutableArray* )getFeedsArray
{


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

    return feedsDownload; 

}

计数为零。

因此,我在 ClassA.m 中的另一个方法中检查了 feedDownload 数组,该方法在 getFeedsArray 方法执行之前被调用,并从该方法返回正确的值。

但是,当从 ClassB.m 调用 getFeedsArray 时,数组计数为零。但对于 getFeedsArray 代码的第二个版本,它仅为零:

因此,如果我这样做并且不触及任何其他代码:

-(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 方法。馈送数组:1 数组中的项目:1(在 ClassB.m 内)

如果我然后像这样更改代码:

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

    return feedsDownload; 

}

结果:Feeds 数组:1(来自 ClassA.m otherMethod)- otherMethod 调用 getFeedsArray 方法。馈送数组:0 数组中的项目:0(在 ClassB.m 内)

因此,似乎第二次调用 getFeedsArray 使我的数组计数为零。

抱歉,WTH 正在这里发生,我错过了什么?

谢谢!

4

0 回答 0