如何在一个类中将数组与另一个类中的另一个数组一起设置

时间:2010-04-04 03:09:31

标签: iphone objective-c class nsarray

我已经在一个类中使用这样的数据填充和数组...

PowerClass.h 

NSMutableArray pickerArray;
@property (nonatomic, retain) NSMutableArray pickerArray;

-

PowerClass.m

@synthesize pickerArray;

@implementation
NSMutableArray *array = [[NSArray alloc] initWithObjects:@"stef", @"steve", @"baddamans", @"jonny", nil];
pickerArray = [NSMutableArray arrayWithArray:array];

我正在尝试在另一个类中设置数组

WeekClass.h

PowerClass          *powerClass;
NSMutableArray  *pickerData;

@property (nonatomic, retain) NSMutableArray pickerData;
@property (nonatomic, retain) PowerClass *powerClass;

WeekClass.m

@implementation
pickerData = [NSMutableArray arrayWithArray:powerClass.pickerArray];

我没有错误或警告。它只是崩溃了。 NSLog表示powerClass.pickerArray为NULL。

请指点我正确的方向。

1 个答案:

答案 0 :(得分:2)

内存管理!

您已设置pickerArray = [NSMutableArray arrayWithArray:array];,这是一个自动释放的对象。当你之后要求pickerArray时,它就消失了!

解决方案是使用@synthesize d访问器。而不是:

pickerArray = [NSMutableArray arrayWithArray:array];

...使用以下其中一项:

[self setPickerArray:[NSMutableArray arrayWithArray:array]];
self.pickerArray = [NSMutableArray arrayWithArray:array];
//These two are exactly equivalent, but are both very different from what you have now.

这样,您的财产将为您处理内存管理。