Как мне установить массив в одном классе с другим массивом в другом классе - PullRequest
0 голосов
/ 04 апреля 2010

Я заполнил и массив с данными, как это в одном классе ...

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 Ответ

2 голосов
/ 04 апреля 2010

Управление памятью!

Вы установили 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.

Таким образом, ваша собственность будет обрабатывать управление памятью для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...