В моей программе я создаю несколько пользовательских UIViewCells, загруженных из nib-файла:
[[NSBundle mainBundle] loadNibNamed:@"CustomCells" owner:self options:nil];
Как только они загружены, я устанавливаю их и возвращаюсь из функции:
if (indexpath.row == 1) {
[nibTextInputer setupWithName:@"notes" ...];
return nibTextInputer;
} else {
[nibSelectInputer setupWithName:@"your_choice" ...];
return nibSelectInputer;
};
Где nibTextInputer моего класса (AFTextInputer), а nibSelectInputer моего другого класса (AFTextInputer).Оба класса являются подклассами из UITableViewCell.
Все работает нормально, НО ломается, когда я добавляю к этому кеширование:
Boolean inCache = false;
if (indexPath.row == 1) {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"nibTextInputer"];
if (cell != nil) {
NSLog(@"%@", [cell description]); // prints out ok, correct type.
nibTextInputer = (AFTextInputer*) cell;
inCache = true;
};
};
if (!inCache) {
[[NSBundle mainBundle] loadNibNamed:@"CustomCells" owner:self options:nil];
}
Как только я добавляю вышеописанное, EXC_BAD_ACCESS начинает появляться в случайных местах, обычно бездополнительная информация, а иногда и с этой ошибкой:
-[CALayer prepareForReuse]: unrecognized selector sent to instance
или даже
-[UIImage prepareForReuse]: unrecognized selector sent to instance
Расположение EXC_BAD_ACCESS, по-видимому, случайное.Иногда это сразу после «dequeue», иногда за пределами функции ..
Я думаю, проблема заключается в моей реализации пользовательских UIViewCells, но я не знаю, с чего начать искать ..
Идеи?