引用从ClassA到Class B的Mutable数组

时间:2011-09-06 16:07:17

标签: objective-c arrays class

有人可以帮我引用不同类的数组。

这是ClassA.h

@interface ClassA : UIViewController <MKMapViewDelegate> {

NSMutableArray *theArray;

}

@property (nonatomic, retain) NSMutableArray *theArray;

-(NSMutableArray *) pleaseReturnTheArray;

@end

ClassA.m

#import "ClassA.h"

@implementation ClassA
@synthesize theArray;

...

-(NSMutableArray *) pleaseReturnTheArray {

return theArray; 

}

这里是ClassB.m(我想引用ClassA数组,我有#import“MapView.h”进入这个类,这是一个被推到屏幕上的不同视图)

- (void)viewDidLoad {

[super viewDidLoad];

//first test
ClassA *firstTest = [[ClassA alloc] init];    
NSMutableArray *firstTestArray = [firstTest.theArray mutableCopy];    
NSLog(@"first test - %@", firstTestArray);

//second test
NSMutableArray *secondTestArray = [firstTest pleaseReturnTheArray];   
NSLog(@"second Test - %@", secondTestArray);

...

我得到的NSLog的结果是......

first test - (null)
second Test - (null)

我确信我以前使用过其中一种方法,并且工作正常。是否与ClassB是由标签栏控制器推送的不同视图这一事实有关?

任何帮助将不胜感激。

克里斯

1 个答案:

答案 0 :(得分:0)

我最初的猜测是你没有在ClassA的init方法中将theArray初始化为一个真正的数组。默认情况下,它将为零。因此,mutableCopy也将为nil,如输出中所示。或者在分配firstTest之后添加这行代码会有所帮助:

firstTest.theArray = [NSArray arrayWithObjects:@"A",@"B",nil];

此外,pleaseReturnTheArray方法与theArray getter是多余的。您不妨编写以下代码行:

NSMutableArray *secondTestArray = firstTest.theArray;

请注意,因为您正在为firstTestArray获取可变副本,所以firstTestArray和secondTestArray将相同,但它们将不是相同的数组。这意味着如果你在firstTestArray中添加一些东西,它将不会出现在secondTestArray中,反之亦然。