2012-02-29 70 views
1
- (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

回答

0

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