的UIBarButtonItem崩溃iphone应用程序按钮被点击时
-
21-08-2019 - |
题
UIBarButtonItem *rButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:NULL];
rButton.action = @selector(refreshAction);
self.navigationItem.rightBarButtonItem = rButton;
[rButton release];
上面的代码正常工作以创建一个按钮,并把它添加到导航栏,但是当我按一下按钮崩溃该应用与EXC_BAD_ACCESS。如果我注释掉rButton.action = @selector(refreshAction);点击按钮将不会有任何东西,但它不会崩溃或者。
- (void)refreshAction {
NSLog(@"refreshAction");
}
这个码是其中被推到从NavigationViewController viewDidLoad方法的navigationController堆栈TableViewController的viewDidLoad方法。
我花了大概3小时试图得到这个工作,但无济于事。
解决方案
像往常一样存储器管理是罪魁祸首。从navigationController加载tableViewController:
NearbyTableViewController *tableController = [[[NearbyTableViewController alloc] initWithNibName:@"NearbyTableViewController" bundle:nil] autorelease]; self.nearbyTableController = tableController;
[self pushViewController:self.nearbyTableController animated:YES]; [tableController release];
释放设置成自动释放物体...必须在存储器管理中最常见的错误。 删除该行[tableController释放]解决了这个问题
其他提示
如果您在创建按钮,即指定@selector(refreshAction)
任何运气:
UIBarButtonItem *rButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refreshAction)];
也许目标没有得到保存,如果你不还指定动作初始化。
我不完全100%肯定,为什么你的代码不能正常工作,但在构造函数中选择直接设置没有问题:
UIBarButtonItem *rButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh
target:self
action:@selector(refreshAction)];
不隶属于 StackOverflow