2010-10-14 62 views
0

調用以下線的時候我得到一個EXC_BAD_ACCESS信號:EXC_BAD_ACCESS信號

self.distance = [NSNumber numberWithDouble:[currentLocation distanceFromLocation: self.location]]; 

這僅在iOS 3.2發生的iPad,

我知道這是一個記憶的問題,但我可以」 t似乎看不出上述線路有什麼問題?

編輯:這裏是完整的方法:

-(void)updateDistance:(CLLocation *)currentLocation { 

    self.distance = [NSNumber numberWithDouble:[currentLocation distanceFromLocation:self.location]]; 

    placeWrapper.distance = self.distance; 

} 

被稱爲像這樣:在這裏創建

[place updateDistance:self.currentLocation]; 

self.currentLocation:

CLLocation *location = [[CLLocation alloc] initWithLatitude:newLocation.coordinate.latitude longitude:newLocation.coordinate.longitude]; 

self.currentLocation = location; 

[location release]; 

另一個編輯:)

他re是堆棧軌跡:http://pastie.org/1222992

回答

1

NSZombieEnabled設置運行您的代碼。這應該告訴你,如果你過度釋放或保留在某個地方。

+0

嗯它不提供任何東西,測試它正在通過釋放一個對象故意工作 – Alex 2010-10-15 09:47:21

+1

接下來的事情是在調試器中運行代碼並獲取堆棧跟蹤以找出造成訪問不良的原因。 – JeremyP 2010-10-15 09:58:06

+0

這裏是堆棧跟蹤http://pastie.org/1222992 – Alex 2010-10-15 10:06:39

0

如果沒有證明您在何處/如何創建「currentLocation」,「location」,甚至可能是「self」,這很難說。我猜測currentLocation或self.location沒有正確保留在創建/設置。

+0

對不起的背景下,我已更新我的問題 – Alex 2010-10-14 15:59:55

+0

你怎麼聲明你的-currentLocation屬性?你是綜合訪問者還是手動寫入? – 2010-10-14 16:15:53

+0

它是合成的 – Alex 2010-10-14 16:36:13

0

您需要保留的東西......

[currentLocation retain]

[self.location retain];

但你必須進一步做起來的代碼。有些東西會被「遺忘」或「超出範圍」,請嘗試保留。

不要遺忘,因爲它是你保留下來的。

相關問題