NSArray не будет инициализироваться в моем представлении MVC - PullRequest
1 голос
/ 13 мая 2011

Первые несколько программ, которые я написал в ObjC, работали, но были в беспорядке, поэтому на этот раз я хотел сделать все правильно и использовать MVC.Все части работают и были протестированы, и все шло отлично, пока я не попытался скопировать NSMutableArray из модели через VC в представление.Точно такой же формат и код использовались и отлично работают в другом аспекте программы, но этот конкретный вид использует drawRect и прерывается, если я не сохраняю массив.Когда я делаю это вызывает утечку.Чтобы изолировать проблему и создать обходной путь, я загрузил массив непосредственно из списка pList.Выглядит это так:

@interface HWView : UIView <UIGestureRecognizerDelegate>
{
NSMutableArray *drawStates; 
}
@property (nonatomic, retain) NSMutableArray *drawStates; 

в .m

@implementation HWView

@synthesize drawStates;

- (void)awakeFromNib
{
[self HWVReset];
}
-(void)HWVReset
{
NSLog(@"HWVReset:");
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES)   objectAtIndex:0];
NSString *plistPath = [documentsDirectorystringByAppendingPathComponent: @"PLIST_drawState.plist"];
self.drawStates = [[NSMutableArray arrayWithContentsOfFile:plistPath]retain];
NSLog(@"drawStates:%@",self.drawStates);
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect 
{
//draw code
}
- (void)dealloc 
{
[self.drawStates release];
[super dealloc];
}

Так что работает, но течет.Я удаляю сохранение из: "self.drawStates = [[NSMutableArray arrayWithContentsOfFile: plistPath] retain];"и он падает.Любая помощь приветствуется.

1 Ответ

0 голосов
/ 20 мая 2011

Конечно: [NSArray array] является автоматически выпущенным объектом. Таким образом, вы будете вызывать освобожденный объект. Читайте об Autorelease в документах Apple.

...