将 UITableViewController 推送到 [self navigationController] 会导致 EXC_BAD_ACCESS

Posted

技术标签:

【中文标题】将 UITableViewController 推送到 [self navigationController] 会导致 EXC_BAD_ACCESS【英文标题】:Pushing UITableViewController onto [self navigationController] causes an EXC_BAD_ACCESS 【发布时间】:2010-07-13 23:41:26 【问题描述】:

在我所在的当前视图中,按钮 touch-up-inside 事件会导致以下操作:

(请注意,在调试器中,我已经验证了 [self navigationController] 和实例化的 historyViewController 确实存在。

我无法确定为什么会发生这种不良访问。我可以从导航控制器弹出/推送这个视图/其他视图。关于如何着手调查为什么 视图在被推送到导航控制器时会出现问题的任何想法?


-(IBAction) viewOrEditHistory: (id) sender 
    HistoryViewController *historyViewController = [[HistoryViewController alloc] initWithStyle:UITableViewStyleGrouped];
    historyViewController.title = @"View or Edit by date";
    historyViewController.sameExSessions = [[NSMutableArray alloc] init];
    historyViewController.exercise = [[Exercise alloc] initWithName:self.title muscleGroup:muscleGroupLabel.text];

/*** EXC_BAD_ACCESS happens after following line is executed ***/
    [[self navigationController] pushViewController:historyViewController animated:YES];

这是我的 HistoryViewController.h


#import 

@interface HistoryViewController : UITableViewController 

    NSMutableArray *sameExSessions;
    Exercise *exercise;


@property (nonatomic, retain) NSMutableArray *sameExSessions;
@property (nonatomic, retain) Exercise *exercise;

-(NSMutableArray *) SameExerciseSessionList;
-(NSString *) getDocPath;
-(NSInteger) tableView:(UITableView *) tableView numberOfRowsInSection: (NSInteger)section;
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath;

@end

【问题讨论】:

【参考方案1】:

还请直接进行内存管理,否则会遇到更多问题。每个 alloc 都应该跟一个 release 或 autorelease。

【讨论】:

确实,马虎的内存管理是问题的根源。谢谢!

以上是关于将 UITableViewController 推送到 [self navigationController] 会导致 EXC_BAD_ACCESS的主要内容,如果未能解决你的问题,请参考以下文章

将 UITableViewController 推送到 [self navigationController] 会导致 EXC_BAD_ACCESS

推送到 navigationController 时 UITableViewController 静态单元格不出现

从 UITableViewController 推送到 UIViewController 时,底部标签栏消失并保持黑色

如何正确使用 UISplitTableViewController 来显示两个 UITableViewController?

UITableViewController 和 NavigationController

UINavigationController:推自我?