TableViewController падает при вызове сохраненного свойства? - PullRequest
1 голос
/ 08 января 2011

У меня есть контроллер табличного представления, и во время его инициализации я установил свойство NSArray, которое затем используется в методе cellForRowAtIndexPath для отображения данных в таблице.

Но, когда я касаюсь строки, когда я вызываю это сохраненное свойство NSArray, оно говорит EXC_BAD_ACCESS!

К вашему сведению, свойство определено, как показано ниже, и использует пользовательскую функцию получения:

@property (nonatomic,retain) NSArray *dataList;

и в файле .m:

@synthesize dataList;

- (NSArray *)dataList
{
    if (!dataList)
    {
        NSString *p = [kind lowercaseString];
        NSString *s = [[NSBundle mainBundle] pathForResource:p ofType:@"txt"];
        NSLog(@"%@",s);

        NSData *dataRep = [NSData dataWithContentsOfFile:s];
        NSPropertyListFormat format;
        dataList = [NSPropertyListSerialization propertyListFromData: dataRep
                                                     mutabilityOption: NSPropertyListImmutable
                                                               format: &format
                                                     errorDescription: nil];
        if (dataList.count == 0)
            NSLog(@"Fetch failed!");
    }

    return dataList;
}

Есть предложения?

1 Ответ

3 голосов
/ 08 января 2011

Это проблема:

dataList = [NSPropertyListSerialization propertyListFromData ...

Эта функция не начинается с alloc, copy или retain, поэтому она возвращает объект с автоматическим освобождением.Тем не менее, вам нужно сохранить его, чтобы он оставался рядом.

У вас есть два варианта:

self.dataList = [NSPropertyListSerialization propertyListFromData ...

или

dataList = [[NSPropertyListSerialization propertyListFromData ...] retain];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...