0

我正在尝试使用以下方法在我的导航控制器上推送一个新视图:

    -(IBAction)switchPage:(id)sender
{
 MyTableViewController *myTableView = [[CMyTableViewController alloc] initWithNibName:@"MyTableView" bundle:[NSBundle mainBundle]];
 [myTableView release];
 [self.navigationController pushViewController:myTableView animated:YES];
}

我遇到以下错误:

2010-02-25 21:19:57.717 CoC[3399:20b] *** -[UIViewController switchPage:]: unrecognized selector sent to instance 0xf1a660
2010-02-25 21:19:57.718 CoC[3399:20b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UIViewController switchPage:]: unrecognized selector sent to instance 0xf1a660'
4

6 回答 6

2

推后调用释放。

于 2010-02-26T04:20:30.270 回答
1

您正在释放一个您刚刚分配的对象,这没有任何意义。

 MyTableViewController *myTableView = [[CMyTableViewController alloc] initWithNibName:@"MyTableView" bundle:[NSBundle mainBundle]];
     [myTableView release];

将 myTableView 推入堆栈后释放

于 2010-02-26T04:22:01.440 回答
1

2010-02-25 21:19:57.717 CoC[3399:20b] * ** -[UIViewController switchPage:]:无法识别的选择器发送到实例 0xf1a660

您的崩溃不是因为您提到的代码。但是您的代码中有一个错误,例如发布和然后推送。将其更改为:

 -(IBAction)switchPage:(id)sender
{
 MyTableViewController *myTableView = [[CMyTableViewController alloc] initWithNibName:@"MyTableView" bundle:[NSBundle mainBundle]];
 [self.navigationController pushViewController:myTableView animated:YES];
 [myTableView release];
}

我猜调用“switchPage:”方法的对象有问题。检查它或显示此方法的调用以获取任何帮助

问候, Manjunath

于 2010-02-26T09:39:22.987 回答
1

上面没关系,当子视图控制器已经被压入导航的堆栈时,保留计数应该增加,然后你应该在压入操作后释放它。

于 2010-11-03T16:48:21.000 回答
0

你确定你不需要交换最后两行吗?首先推动控制器,然后释放它,反之亦然...... :)

于 2010-02-26T04:21:05.873 回答
0

如前所述,在推送视图控制器之前释放它。当你将它推到导航控制器上时,保留计数会增加,然后你可以释放它。

-(IBAction)switchPage:(id)sender
{
     MyTableViewController *myTableView = [[MyTableViewController alloc] initWithNibName:@"MyTableView" bundle:[NSBundle mainBundle]];
    [self.navigationController pushViewController:myTableView animated:YES];
    [myTableView release];
}
于 2010-02-26T09:00:49.760 回答