将 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?