iOS NSNumber intValue EXC_BAD_ACCESS

问题描述:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 

    int num = 5; 
     [viewController functionA:[NSNumber numberWithInt:num-1]]; 

} 

-(void) functionA: (NSNumber*) indexNumber{ 

    int hi = [indexNumber intValue]; 

} 

viewController是一个自定义UIViewController类的实例。 functionA是该类中的一个函数。 touchesEnded在另一个类中。iOS NSNumber intValue EXC_BAD_ACCESS

我得到EXC_BAD_ACCESS。在线搜索后,似乎它可能是一个释放/分配错误,但我无法弄清楚。

+1

numberWithInt看起来像它返回一个autorelease'd值。你可以致电保留,还是你使用ARC? – CodaFi 2012-02-29 04:48:48

+1

什么是viewController ..? – Kamarshad 2012-02-29 04:50:38

OK,两件事情:

  1. 你永远有你的NSNumber,这是不相关的明确的所有权,因为

  2. 的viewController是最有可能为零。你为什么要引用这样的一个类,如果你可以使用self并保存一些额外的字符?如果该函数确实在另一个类中,请在运行和调用方法之前检查是否已分配并初始化该函数。你的崩溃可能与所说的额外类有关,比你的NSNumber更多。

+0

当我在调试器中一步一步地完成调用时,它成功地调用了函数A.它只是试图执行intValue函数而崩溃。 – user1120008 2012-02-29 04:56:30

+0

在方法中的intValue调用之前放置一个NSLog行,并检查indexNumber变量是否为零。 – CodaFi 2012-02-29 04:57:35

+0

我做到了,不是零。 – user1120008 2012-02-29 05:03:41