2010-09-20 9 views
6

Tôi có một ứng dụng trưng bày sự cố gián đoạn. Các bản ghi sự cố đang hiển thị một dấu vết ngăn xếp khó khăn cho tôi để giải mã, vì vậy hy vọng rằng ai đó đã nhìn thấy điều này và có thể chỉ cho tôi đi đúng hướng.MKReverseGeocoder gây EXC_BAD_ACCESS?

Về cơ bản, ứng dụng thực hiện yêu cầu mã hóa địa lý đảo ngược lúc khởi động để hiển thị vị trí của người dùng trong nhãn. Ngoài ra, tôi thực hiện một yêu cầu mã hóa địa lý đảo ngược khác cho một cuộc gọi API cụ thể.

Điều đang xảy ra là đôi khi MKReverseGeocoder này mất nhiều thời gian để quay lại. Cuối cùng tôi cho rằng tôi sẽ nhận được một cuộc gọi lại thất bại, và đôi khi tôi làm, nhưng nó có thể là phút trước khi điều này xảy ra.

Vì cuộc gọi API cũng đang phát hành một yêu cầu MKReverseGeocoder khác, tôi nghĩ có lẽ có vấn đề với nhiều cuộc gọi đồng thời?

Đây là stacktrace tôi:

Program received signal: “EXC_BAD_ACCESS”. 
(gdb) backtrace 
#0 0x30c237a0 in -[MKPlacemark _mapkit_cache_heapTime]() 
#1 0x30bffe60 in compareTimes() 
#2 0x32403b24 in CFBinaryHeapAddValue() 
#3 0x30c0030c in -[MKCache setObject:forKey:]() 
#4 0x30c2aa48 in -[MKReverseGeocodeCache addPlacemark:forCoordinate:]() 
#5 0x30c2251c in -[MKReverseGeocoder requester:didReceiveResponse:forRequest:]() 
#6 0x3388cc1c in -[PBRequester _tryParseData]() 
#7 0x3388b288 in -[PBRequester connection:didReceiveData:]() 
#8 0x337490ce in -[NSURLConnection(NSURLConnectionReallyInternal) sendDidReceiveData:originalLength:]() 
#9 0x33748ff0 in _NSURLConnectionDidReceiveData() 
#10 0x30899ff8 in URLConnectionClient::_clientDidReceiveData() 
#11 0x3088ca3e in URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload() 
#12 0x3088cb40 in URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload() 
#13 0x3088cb40 in URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload() 
#14 0x3088c8ce in URLConnectionClient::processEvents() 
#15 0x3088c878 in URLConnection::multiplexerClientPerform() 
#16 0x3088c7f8 in MultiplexerSource::perform() 
#17 0x3088c798 in MultiplexerSource::_perform() 
#18 0x323f4f48 in CFRunLoopRunSpecific() 
#19 0x323f4c1e in CFRunLoopRunInMode() 
#20 0x335051c8 in GSEventRunModal() 
#21 0x324a6c30 in -[UIApplication _run]() 
#22 0x324a5230 in UIApplicationMain() 
#23 0x000024f8 in main (argc=1, argv=0x2ffff504) at /Users/ben/projects/ABC/iphone/ABC/main.m:14 

Vì nó không giống như nó thậm chí còn gọi phương thức callback của tôi, tôi không biết nơi để tìm kiếm vấn đề EXC_BAD_ACCESS này. Đại biểu của tôi chắc chắn vẫn còn hoạt động (tôi đang nhìn chằm chằm vào View Controller đã đưa ra yêu cầu).

1 lưu ý cuối cùng: Nó chỉ xuất hiện cho đến nay trên iOS 3.1.3. Tôi chưa từng thấy nó xảy ra cho iOS 4.0.u

+2

bạn có thể đăng mã nơi bạn đang thực hiện mã hóa địa lý ngược không? có thể giúp chỉ ra vấn đề của bạn – Daniel

+0

Dấu vết ngăn xếp cụ thể này đang hiển thị sự cố xảy ra ngay lập tức khi ứng dụng khởi chạy. Một màn hình khác có một nút gọi một API từ xa, trước đó, cũng yêu cầu một RGC khác. Điều này không phải luôn luôn sụp đổ. Nó chỉ xảy ra một lần trong khoảng 6 bài kiểm tra ngày hôm nay. –

+0

Tôi đã gặp chính xác cùng một vấn đề. Tôi cũng đang sử dụng 2 trường hợp riêng biệt của MKReverseGeocoder trong các chủ đề riêng biệt. Đây là yêu cầu của tôi mặc dù. Tất cả những gì bạn đã đề cập áp dụng chính xác giống với tôi quá. Nó xuất hiện trong 3.0 nhưng không xuất hiện trong 4.0+. Bạn đã giải quyết vấn đề này như thế nào? Tôi muốn nói thêm rằng, khi tôi đang gỡ lỗi để tìm ra câu trả lời bằng cách sử dụng điểm ngắt bất cứ khi nào thích hợp, tôi phát hiện ra rằng vụ tai nạn này đã không xảy ra. Điều này thực sự nói rằng vụ tai nạn là do một số đồng thời. Mặc dù, làm cách nào bạn khắc phục sự cố này trong iOS 3.0? –

Trả lời

0

Hãy thử sử dụng công cụ Zombies từ cấu hình xcode. Điều này sẽ giúp bạn tìm bộ nhớ đối tượng nào gây ra EXC_BAD_ACCESS.

+0

Tôi không nhớ kết quả cuối cùng là gì (đây là 2 năm trước) nhưng việc bật Zombies đã giúp tìm ra vấn đề. Đánh dấu điều này là chính xác. –

0

Đây là tài liệu Google API cho Mã hóa địa lý ngược, trả về JSON cũng như đầu ra XML và api đáng tin cậy và ổn định.

http://code.google.com/apis/maps/documentation/geocoding/

cho Ví dụ url này cung cấp đầu ra JSON để sử dụng này, bạn có thể giải quyết problem.Let của bạn tôi biết nó sẽ làm việc cho bạn hay không?

http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=true_or_false