2012-03-18 12 views
21

मुझे हाल ही में आईट्यून कनेक्ट से एक क्रैश रिपोर्ट मिली है। असल में यह हजारों उपयोगकर्ताओं से मिली एकमात्र क्रैश रिपोर्ट है। यह एक आईपॉड 4,1 डिवाइस है। दिलचस्प भागों हैं:UIKit: [UIViewController mutableChildViewControllers] क्रैश?

Date/Time:  2012-02-27 22:53:27.596 +0800 
OS Version:  iPhone OS 5.0.1 (9A405) 
Report Version: 104 

Exception Type: EXC_CRASH (SIGABRT) 
Exception Codes: 0x00000000, 0x00000000 
Crashed Thread: 0 

Last Exception Backtrace: 
0 CoreFoundation     0x338958bf __exceptionPreprocess + 163 
1 libobjc.A.dylib     0x303891e5 objc_exception_throw + 33 
2 UIKit       0x31259749 -[UIViewController mutableChildViewControllers] + 1 
3 UIKit       0x31259349 -[UINavigationController pushViewController:animated:] + 37 
4 MyApp       0x000081e5 -[MyListController tableView:didSelectRowAtIndexPath:] (MyListController.m:207) 
5 UIKit       0x312d3565 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 945 
6 UIKit       0x3134bce7 -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 159 

ऐसा लगता है कि दुर्घटना तब होता है जब एक तालिका दृश्य से एक पंक्ति का चयन किया जाता है, और कोई नया दृश्य नियंत्रक नेविगेशन में धकेल दिया है। मेरे कोड के अनुसार, नया दृश्य नियंत्रक पहले से ही बनाया गया है, इसलिए क्रैश UINavigationController में हुआ।

यह मेरे द्वारा लिखे गए कोड की गलती की तरह नहीं दिखता है। और मुझे आश्चर्य है कि क्या मैं इस पर सही हूं? मैं इस समस्या को कैसे डीबग करूं?

+0

मैं अब तक कोई भाग्य के साथ एक समान क्रैश (आईओएस 5.1 को छोड़कर) की खोज कर रहा हूं। – Jason

+0

@ जेसन यह आईपॉड भी हो रहा है? मुझे कम स्मृति चेतावनी से संबंधित एक और क्रैश रिपोर्ट मिली है जो आईपॉड पर केवल एक बार हुई थी। –

+2

यह मेरे मामले में एक आईपैड है ... कभी भी इसका समाधान ढूंढें? – Jason

उत्तर

-1

मुझे मिल गया! मुझे भी वही समस्या थी और आपके कोड में ऐसा लगता है कि एक बटन दबाया जाता है, जिससे दुर्घटना हो जाती है! एक क्रम अपवाद है कि पकड़ा नहीं है की वजह से

1) SIGABRT होता है:

दो बातें एक SIGABRT हल करने के लिए:

Last Exception Backtrace: 
0 CoreFoundation     0x338958bf __exceptionPreprocess + 163 
1 libobjc.A.dylib     0x303891e5 objc_exception_throw + 33 
2 UIKit       0x31259749 -[UIViewController mutableChildViewControllers] + 1 
3 UIKit       0x31259349 -[UINavigationController pushViewController:animated:] + 37 
4 MyApp       0x000081e5 -[MyListController tableView:didSelectRowAtIndexPath:] (MyListController.m:207) 
5 UIKit       0x312d3565 -[UITableView _selectRowAtIndexPath:animated:scrollPosition:notifyDelegate:] + 945 
6 UIKit       0x3134bce7 -[UITableView _userSelectRowAtPendingSelectionIndexPath:] + 159 

यहाँ मेरी सुझाव है। जब ऐसा होता है तो डीबगर कंसोल या डिवाइस कंसोल पर लिखी गई कुछ जानकारी होती है जो अपवाद के सटीक कारण बताती है। आपने हमें यह पाठ नहीं दिखाया है। यह शुरू होता है "एप्लिकेशन को समाप्त करना ..."

हमें वह टेक्स्ट दिखाएं।

2) यदि आप डीबगर में अपना ऐप चलाते हैं और अपवाद फेंक फ़ंक्शन पर ब्रेकपॉइंट सेट करते हैं तो अपवाद फेंकने पर ऐप रुक जाएगा और यह आमतौर पर इसे समझने के लिए पर्याप्त होगा। डीबगर ब्रेकपॉइंट फलक पर जाएं और नीचे बाईं ओर एक नियंत्रण है जो क्लिक होने पर आपको अपवाद ब्रेकपॉइंट सेट करने की अनुमति देता है।

+2

हम्म ... मुझे डर है कि आप मेरे प्रश्न को गलत तरीके से पढ़ते हैं। क्रैश रिपोर्ट आईट्यून्स कनेक्ट से पुनर्प्राप्त की जाती है, और यह वही है। कोई कंसोल एक्सेस नहीं है या अन्यथा मैंने और जानकारी देखी होगी। और मुझे कहना है कि इसमें कोई बटन शामिल नहीं है, यह एक सूचीदृश्य और एक सेल है। आपने बताया कि आप एक समान समस्या में भाग गए हैं, लेकिन आपने यह नहीं कहा कि आपने समस्या को कैसे हल किया है। –

+0

ठीक है अब मुझे इसे एक अलग तरीके से देखना है ... आईट्यून कनेक्ट? शायद यह शून्य के साथ एक त्रुटि का कारण है ... शायद..वह मैं एक्सकोड में गधा नहीं हूँ..मैं सीख रहा हूँ .. क्षमा करें अगर मैं देव को देखने में मदद नहीं कर सकता। मंच वहाँ एक सुराग होना चाहिए! – Noah

+0

अच्छी तरह से वह अपने बिंदु # 1 के साथ सही है, लेकिन मुझे लगता है कि आईट्यून्स लॉग को शामिल नहीं करता है? ... मैं एक इंडेक्सऑटऑफबाउंड्स के लिए वोट दूंगा :) - क्या आप दृश्य को संशोधित कर रहे हैं नियंत्रक अपने ऐप में मैन्युअल रूप से किसी भी तरह से ढेर हैं? –

1

ऐसा लगता है कि उपयोगकर्ता को कम स्मृति चेतावनी मिली है। UINavigationControllers उनके विचारों को बनाए रखेंगे, जबकि टैब्ड वाले लोग अदृश्य लोगों को बंद कर देंगे। हालांकि, कम स्मृति कोड अभी भी बुलाया जा रहा है। उस स्थान तक पहुंचने से पहले अपने चेतावनी हैंडलर देखें। साथ ही, सभी प्रविष्टि और निकास बिंदुओं पर हार्डवेयर मेनू के अंतर्गत "स्मृति चेतावनी अनुकरण" को मारकर परीक्षण करें। http://forums.macrumors.com/showthread.php?t=876419 जब आप नहीं करते हैं तो क्या होता है इसकी एक गड़बड़ी दिखाती है। iphonedevsdk.com/forum/iphone-sdk-development/14225-uinavigationcontrollers-and-didreceivememorywarning.html की एक अच्छी टिप्पणी है या इस पर इसे कैसे संभालना है।

मैं शर्त लगा रहा हूं कि आपका व्यू कंट्रोलर कुछ लोड करता है और स्मृति चेतावनी का कारण बनता है। सुनिश्चित करें कि उपयोगकर्ता एक-दूसरे के ऊपर कई वस्तुओं को ढेर नहीं कर सकता है, और यह सुनिश्चित कर लें कि ऐप को बनाए रखने के लिए आवश्यकतानुसार कई लीक हटाने के लिए आपका ऐप प्रोफाइल किया गया हो।

उपर्युक्त चिह्न पर नहीं हो सकता है, लेकिन संबंधित होना चाहिए।

अंतिम नोट, एआरसी का उपयोग न करें। सुपरक्लास कार्यों को कॉल करने की अनुमति देने वाली कुछ चीज खराब हो जाती है। यदि आप ब्रिजिंग कोर फाउंडेशन को समझते हैं, तो शायद एआरसी ठीक है। मैं व्यक्तिगत रूप से इसे हर कीमत से बचता हूं बी/सी मेमोरी को ऐप्पल के अंडर-द-हूड द्वारा यादृच्छिक रूप से संभाला जाता है। मैंने अपनी सामग्री को बहुत अधिक असफल तरीके से देखा है

+0

सूचक के लिए धन्यवाद। वास्तव में, मेमोरी चेतावनी सिमुलेशन इस दुर्घटना को ट्रिगर नहीं करेगा। मेरे ऐप में बहुत ही कम स्मृति पदचिह्न है। और पिछली बार जब मैंने प्रोफाइल किया था तो यह केवल 6 एमबी रैम का उपयोग करता है। मैं एआरसी का उपयोग करता हूं। कुछ स्मृति के लिए देर से जारी होना संभव है। लेकिन यह 24 एमबी बाधा हिट करने के विपरीत है। –

+0

लगता है कि यह उन दुर्लभ मामलों में से एक है जहां सामान अन्य सामानों के बी/सी को दुर्घटनाग्रस्त कर देता है, या उपयोगकर्ता छोटा अंश था जो इसे कर सकता था। होता है, हे। अगर आपके शार्क टूल का कहना है कि स्मृति कम है, तो मुझे इसके बारे में चिंता नहीं होगी, यहां तक ​​कि एक रिसाव तब तक प्रभावित नहीं करेगा जब तक कि यह समय के साथ ढेर न हो जाए। देव के साथ शुभकामनाएं, और मुझे लगता है कि आप अन्य टिप्पणियों में एक बेहतर लॉग टूल का उपयोग कर रहे हैं, आसान साबित करना चाहिए –