разработка айфона. EXC_BAD_ACCESS при передаче данных между представлениями

У меня есть приложение, которое имеет простой TableView и переходит к подробному представлению при нажатии на элемент. Но я попал в ловушку с EXC_BAD_ACCESS при передаче объекта Ringtone * для подробного просмотра с использованием свойства.

Вот определение класса рингтона, в котором хранятся данные:

@interface Ringtone : NSObject {
    NSString *ringtoneName;

    NSString *desc;

    NSString *fileName;

    NSDate *date;

    int cId;

    int rId;

    int downloads;

    int fileSize;
}

@property (nonatomic, retain) NSString *ringtoneName;

@property (nonatomic, retain) NSString *desc;

@property (nonatomic, retain) NSString *fileName;

@property (nonatomic, retain) NSDate *date;

@property (nonatomic, assign) int cId;

@property (nonatomic, assign) int rId;

@property (nonatomic, assign) int downloads;

@property (nonatomic, assign) int fileSize;

@end

Вот определение свойства в DetailedViewController:

@interface RingtoneDetailViewController : UITableViewController {
    Ringtone *R;
}

@property (nonatomic, retain) Ringtone *R;

@end

Затем в событии выбора элемента:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {

    RingtoneDetailViewController *detailViewController = [[RingtoneDetailViewController alloc] initWithStyle:UITableViewStyleGrouped];

    Ringtone *r = [ringtoneList objectAtIndex:[indexPath row]];
    detailViewController.R = r; //EXC_BAD_ACCESS This line

    [self.navigationController pushViewController:detailViewController animated:YES];
    [detailViewController release];

}

Ошибка EXC_BAD_ACCESS при назначении свойства R. Где я допустил ошибки?


person MaoWoo    schedule 10.03.2011    source источник
comment
OT: вы должны копировать (не сохранять) конкретные типы по умолчанию: то есть Ringtone: ringtoneName, desc, fileName, date   -  person justin    schedule 10.03.2011
comment
вам необходимо выделить память для объекта Ringtone перед назначением объекту detailViewController.   -  person Swapna    schedule 10.03.2011


Ответы (2)


Пожалуйста, проверьте, правильно ли object из Ringtone соответствует allocated.

person visakh7    schedule 10.03.2011
comment
Где я должен поместить код выделения для объекта мелодии звонка в detailView? - person MaoWoo; 10.03.2011
comment
Нет, вы должны выделить его, прежде чем присваивать ему какое-либо значение. - person visakh7; 10.03.2011

вам нужно синтезировать свойство в классе реализации. Потому что, если вы создаете свойство и хотите использовать это свойство в другом классе, вы должны синтезировать это свойство.

person Salim    schedule 10.03.2011