有人可以帮我引用不同类的数组。
这是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是由标签栏控制器推送的不同视图这一事实有关?
任何帮助将不胜感激。
克里斯
答案 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中,反之亦然。