2011-03-10 49 views
0

我有一个应用程序,它具有一个简单的TableView,并在点击一个项目时推送到一个详细视图。但是,当使用属性将Ringtone *对象传递给详细视图时,我被EXC_BAD_ACCESS困住了。iPhone开发。 EXC_BAD_ACCESS当在视图之间传递数据时

这里是铃声类的定义,它存储的数据:

@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]; 

} 

分配R属性时发生EXC_BAD_ACCESS。我在哪里犯错误?

+1

OT:你应该在默认情况下复制(不保留)具体类型:也就是铃声:ringtoneName,desc,fileName,日期 – justin 2011-03-10 06:30:02

+0

你需要在分配给detailViewController对象之前为Ringtone对象分配内存。 – Swapna 2011-03-10 06:44:52

回答

0

请确认的object是否为allocated

+0

我应该在哪里把铃声对象的分配代码放在detailView中? – MaoWoo 2011-03-10 07:48:47

+0

不,你必须分配它之前分配任何值。 – visakh7 2011-03-10 09:12:28

0

你必须综合实现类中的属性。 因为如果你是创建一个属性,并且如果你想在其他类中使用该属性,那么你必须合成该属性。

+0

已经使用合成。 – MaoWoo 2011-03-10 07:44:41