Я запускаю свое первое приложение для iOS, и я сталкиваюсь с ошибкой, которая возникает только тогда, когда пользователь касается UItableView. Это приложение является помощником для спряжения глаголов в японском языке.
Вот как это работает:
У меня есть первое представление, которое запрашивает у пользователя японский глагол в алфавите.
Я создаю экземпляр класса Conjuger, который копирует введенный глагол и подготавливает анализ.
Я создаю экземпляр моего resultViewController.
Я связываю свой объект сопряжения со свойством этого контроллера.
Я модально отображаю вид.
ResultViewController отображает все нормально, все данные загружаются из объекта Conjuger, созданного из его родительского представления.
Но, если я коснусь экрана, чтобы прокрутить представление, я получу ошибку EXC_BAD_ACCESS.
Я пытался отладить его, но я еще недостаточно хорош, чтобы найти, в чем проблема.
Я подозреваю, что мой объект сопряжения будет освобожден. Нечетным является то, что атрибут этого объекта "глагол" все еще не поврежден, но другие свойства пусты ... Почему?
Вот мое объявление объекта Conjuger:
@interface Conjuger : NSObject
{
NSString *verb;
//parties qui concernent l'analyse du verbe
//=========================================
int group;
NSString *verbEnd; //la terminaison du verbe
NSString *verbBase; //la base du verbe que l'on emploi dansl es conjugaisons
//declinaisons possibles
//======================
/*
Les clefs sont :
pre : present ou pas : passé
a : affirmatif ou n : négatif
n : neutre ou p : poli
*/
NSMutableDictionary *declinaisons;
//les declinaisons vont etre separees en section pour la table view
int declinaisonsSections;
//Titres des sections
NSArray *sectionsTitles;
}
@property (nonatomic, retain) NSString *verb;
@property (nonatomic) int group;
//@property (nonatomic, retain) NSMutableDictionary *declinaisons;
-(Conjuger *) initWithVerb:(NSString *) verb_;
//analyse du verb (recherche du groupe etc...)
-(int) _analyse;
//action de conjugaison du verbe
-(BOOL) conjugate;
//nombre de sections disponibles
-(NSInteger) sectionsCount;
//nombre de lignes dans une section donnee
-(NSInteger) sectionLinesCount:(NSInteger) sectionId;
//permet deretourner le titre d'une section
-(NSString *) sectionTitle:(NSInteger) sec;
//permet de retourner une declinaison pour une section precise
-(NSString *) declinaisonsBySection:(int) sec sectionLine:(int) secline;
@end
Мой UITableView не имеет делегата, а только мой ResultViewController в качестве источника данных.
Ошибка EXC_BAD_ACCESS появляется в методе titleForHeaderInSection .
Этот метод содержит:
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
return [conjug sectionTitle:section];
}
Методы вызываются после загрузки UITableView, который я подозреваю, но так как этот контроллер не является UITableViewDelegate, почему этот метод вызывается для действий пользователя? Кстати, свиток ...
Мой UITableView не занимает весь экран и помещается в представление.
Я не знаю, какие детали я могу добавить, пожалуйста, спросите, нужна ли вам какая-либо информация. Я могу разместить больше кода или скриншотов, если это необходимо.
Редактировать: вот код, в котором я создаю экземпляр объекта Conjuger и назначаю его контроллеру второго представления
//creation de l'objet conjuger qui servira a afficher les resultats dans la vue modale
Conjuger *conjug = [[[Conjuger alloc] initWithVerb:verb.text] autorelease];
//chargement de la vue modale
ConjugerResultsViewController *res = [[[ConjugerResultsViewController alloc] init] autorelease];
res.conjug = conjug;
//affichage
[self presentModalViewController:res animated:YES];
У меня есть авто-релиз, но я не чувствую, что мой объект будет освобожден или не полностью, если это возможно. Мой атрибут глагола "глагол" по-прежнему содержит данные, но не мои разделыTitles ...
Должен ли я объявить все свои свойства с @ property (nonatomic, retain) ?
Я думал, что @property будет использоваться, только если наши атрибуты должны вызываться извне нашего объекта, я не прав? Я сейчас растерялся: (
Но я изменил свои атрибуты с помощью @property, и я получаю к ним доступ "self", как это было предложено, и ЭТО РАБОТАЕТ! Но все же я не понимаю, почему ... Я пытаюсь найти более объективные чтения c, мои курсы по C теперь далеко позади меня -_-.
Я буду исследовать Apple-i в Xcode4, как это было предложено, это может быть полезно для дальнейших проблем.
Спасибо за ваше чтение и вашу помощь.