Iphone 在类之间传递数组-奇怪的错误?
所以我在类A中创建并填充一个数组,然后在类B中调用类A的一个方法来获取数组 A.h级 A.m级 } 然后在B班,我做这个: B.m级 上面的方法非常有效-数组计数显示1,这是测试应该做的 但是,当我这样做时: A.m班 计数为零 因此,我在ClassA.m中的另一个方法中检查了feedDownload数组,该方法在getFeedsArray方法调用之前被调用,它从该方法返回正确的值 但是,当从ClassB.m调用getFeedsArray时,数组计数为零。但第二个版本的getFeedsArray代码的值仅为零: 因此,如果我这样做,并且不接触任何其他代码:Iphone 在类之间传递数组-奇怪的错误?,iphone,ios,objective-c,Iphone,Ios,Objective C,所以我在类A中创建并填充一个数组,然后在类B中调用类A的一个方法来获取数组 A.h级 A.m级 } 然后在B班,我做这个: B.m级 上面的方法非常有效-数组计数显示1,这是测试应该做的 但是,当我这样做时: A.m班 计数为零 因此,我在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数组:ClassA.m otherMethod中的1-otherMethod调用getFeedsArray方法。
提要数组:1
数组中的项:ClassB.m中的1
如果我随后像这样更改代码:
-(NSMutableArray* )getFeedsArray
{
NSLog (@"Feeds array: %d", [feedsDownload count ]);
return feedsDownload;
}
结果:
Feeds数组:ClassA.m otherMethod中的1-otherMethod调用getFeedsArray方法。
源数组:0
数组中的项:ClassB.m中的0
看来第二次调用getFeedsArray时,数组的计数为零
对不起,这里发生了什么事,我错过了什么
谢谢 简单的家伙…在getFeedArray的第二个版本中,你甚至没有初始化数组,也没有向数组中添加任何内容..那么在这种情况下,你期望得到什么输出呢?feedsDownload在你离开类A时会变为null。因此,当feedsDownload尚未初始化时,你正在从类B调用一个方法..@Xman feedsDownload数组已经在代码中进行了初始化。这就是为什么在第一次从otherMethod调用getFeedsArray时,我得到了正确的帐户。但是当ClassB调用它时,我得到的是零。我还尝试重新初始化它,但这与它无关。感谢这里的输入断点,并检查它是否有数据。更重要的是….-确保**feedsDownload**声明为全局
-(void)loadData
{
ClassA *classA = [[ClassA alloc]init];
NSMutableArray *mutableArray = [classA getFeedsArray];
NSLog (@"Items in Array: %d", [mutableArray count]);
}
-(NSMutableArray* )getFeedsArray
{
NSLog (@"Feeds array: %d", [feedsDownload count ]);
return feedsDownload;
}
-(NSMutableArray* )getFeedsArray
{
NSMutableArray *myArray;
if (!myArray)
{
myArray = [[NSMutableArray alloc]init];
[myArray addObject: @"hello"];
}
NSLog (@"Feeds array: %d", [myArray count ]);
return myArray;
}
-(NSMutableArray* )getFeedsArray
{
NSLog (@"Feeds array: %d", [feedsDownload count ]);
return feedsDownload;
}