2013-02-19 16 views
5

मैंने इस क्रैश रिपोर्ट को कुछ बार देखा है। यह बेहद यादृच्छिक और दुर्लभ है, और मैं इसे समझ नहीं सकता। मैं कर रहा हूँ निम्नलिखित कोडमोडल UIViewController प्रस्तुत करते समय अजीब दुर्घटना

ComposeController *newcontrol = [[ComposeController alloc]initWithMode:1 withNIB:@"ComposeController"]; 
newcontrol.delegate = self; 

UINavigationController *holder = [[UINavigationController alloc] initWithRootViewController:newcontrol]; 
[self presentViewController:holder animated:YES completion:NULL]; 

किसी तरह यह पूरी तरह से इस की ओर जाता है यादृच्छिक पर का उपयोग कर एक मॉडल दृश्य नियंत्रक प्रस्तुत कर रहा है:

OS Version:  iPhone OS 6.1 (10B143) 
Report Version: 104 

Exception Type: SIGSEGV 
Exception Codes: SEGV_ACCERR at 0x9 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libobjc.A.dylib      0x3b25c5d0 objc_msgSend + 16 
1 CoreFoundation      0x334ba73f -[__NSPlaceholderArray initWithObjects:count:] + 271 
2 CoreFoundation      0x334bae09 +[NSArray arrayWithObject:] + 45 
3 UIKit        0x353e80ab -[UIWindow _rotationViewControllers] + 51 
4 UIKit        0x353e7fe3 -[UIViewController viewControllerForRotation] + 91 
5 UIKit        0x353e7f39 -[UIViewController _visibleView] + 97 
6 UIKit        0x3546c05b -[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] + 2483 
7 UIKit        0x3546afab -[UIViewController presentViewController:withTransition:completion:] + 3399 
8 MyApp        0x00046e97 -[Inbox composeHit] (Inbox.m:207) 

उत्तर

-2

इस

[धारक pushViewController कर प्रयास करें: newcontrol एनिमेटेड : हाँ पूरा होने: कुल];

4

मुझे एक ही समस्या काफी लगातार है। ऐसा लगता है कि मैं एक पॉपओवर से एक मोडल व्यू कंट्रोलर पेश कर रहा हूं, जो अच्छी तरह से परीक्षण नहीं किया गया है और ऐप्पल के कोड में एक बग ट्रिगर करता है। बग यह है कि UIKit मेरे व्यू कंट्रोलर के लिए एक अप्रत्याशित संदर्भ रखता है जिसे बाद में बर्खास्त कर दिया गया है और हटा दिया गया है, इसलिए बाद में संदर्भ हिट हो गया है। मेरा कामकाज या तो पॉपओवर से मोडल वीसी प्रस्तुत करने से बचने के लिए है, या ऐसे सभी वीसी को अनिश्चित काल तक बनाए रखने के लिए (सदस्य चर या कुछ ऐसे में)।

नीचे गोरी विवरण हैं।

यहां कोड है जिसका उपयोग मैंने समस्या को ट्रिगर करने के लिए किया था।

-(void) handlePinchFromCell:(AMPSupportingPhotoCell*) cell 
{ 
    UIViewController * vc = [[UIViewController alloc] init]; // UIViewController #0 
    [self presentViewController:vc animated:YES completion:nil]; 
    [self performSelector:@selector(dismiss:) withObject:vc afterDelay:2]; 
} 

-(void) dismiss:(UIViewController*)vc 
{ 
    [self dismissViewControllerAnimated:YES completion:^(){NSLog(@"-------");}]; 
} 

इस कोड को एक UIViewController # 1 का एक हिस्सा है, जो एक UIPopoverController अंदर है, कि से दूसरे UIViewController # 2 है, जो खुद एक से अभी तक एक और दृश्य UIViewController 3 # प्रस्तुत अधिक पॉप है। पॉपओवर बंद होने के बाद क्रैश होता है, नियंत्रक # 2 आईडी खारिज कर दिया जाता है। अभी तक वहाँ

2013-03-13 20:04:24.681 Mercury[16698:19d03] handlePinchFromCell: a225710 
2013-03-13 20:04:27.083 Mercury[16698:19d03] ------- 
2013-03-13 20:04:31.606 Mercury[16698:19d03] *** -[UIViewController retain]: message sent to deallocated instance 0xa225710 

तो, देखा कि कुलपति # 0, आवंटित प्रस्तुत कर ली, खारिज कर दिया 2 सेकंड बाद पुनः आवंटित की जाती है, और:

अगर मैं Zombies सक्षम, मैं एक ही स्टैक ट्रेस मिलता है लेकिन एक संदेश के साथ ऐप्पल के कोड में कहीं भी इसका एक लापरवाही संदर्भ है। जब पॉपओवर बंद हो जाता है और वीसी # 2 को खारिज कर दिया जाता है, तो पूरी चीज विलुप्त वीसी तक पहुंचने की कोशिश कर क्रैश हो जाती है। मैं काफी हद तक निश्चित हूं कि यह ऐप्पल की बग है। मुझे यह भी लगता है कि यह एक पॉपओवर से वीसी पेश करने से संबंधित है, इसलिए यदि आप इससे दूर रहें, या स्वयं वीसी बनाए रखें तो आपको ठीक होना चाहिए।

एक ही समस्या के लिए एक और स्टैक ट्रेस यह है। ऐसा होता है यदि उपर्युक्त कोड दो बार चलाया जाता है:

2013-03-13 20:12:53.883 Mercury[16735:19d03] handlePinchFromCell: 16d54da0 
2013-03-13 20:12:56.285 Mercury[16735:19d03] ------- 
2013-03-13 20:13:03.481 Mercury[16735:19d03] handlePinchFromCell: a2565f0 
2013-03-13 20:13:03.481 Mercury[16735:19d03] *** -[UIViewController isKindOfClass:]: message sent to deallocated instance 0x16d54da0 
(lldb) bt 
* thread #1: tid = 0x1f03, 0x017f8a97 CoreFoundation`___forwarding___ + 295, stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0) 
    frame #0: 0x017f8a97 CoreFoundation`___forwarding___ + 295 
    frame #1: 0x017f894e CoreFoundation`_CF_forwarding_prep_0 + 14 
    frame #2: 0x00c42f90 UIKit`-[UIWindowController transition:fromViewController:toViewController:target:didEndSelector:] + 907 
    frame #3: 0x00a40ee3 UIKit`-[UIViewController presentViewController:withTransition:completion:] + 4521 
    frame #4: 0x00a41167 UIKit`-[UIViewController presentViewController:animated:completion:] + 112 
    frame #5: 0x0006c32d Mercury`-[AMPSupportingPhotosViewController handlePinchFromCell:](self=0x16d55360, _cmd=0x0007a64a, cell=0x0a22a2a0) + 205 at AMPSupportingPhotosViewController.m:184 
    frame #6: 0x015336b0 libobjc.A.dylib`-[NSObject performSelector:withObject:] + 70 
    frame #7: 0x0006f317 Mercury`-[AMPSupportingPhotoCell handlePinch:](self=0x0a22a2a0, _cmd=0x00efb0db, sender=0x0a2504a0) + 215 at AMPSupportingPhotoCell.m:53 
    frame #8: 0x00c2185a UIKit`_UIGestureRecognizerSendActions + 139 
+0

वास्तव में दिलचस्प है। मेरे मामले में मैं एक और मोडल व्यू कंट्रोलर से एक मोडल व्यू कंट्रोलर पेश कर रहा हूं। वही समस्या आपको लगता है? वे हमेशा सही क्रम में विचलित हो जाते हैं लेकिन आप जो कह रहे हैं उसके आधार पर ऐसा लगता है कि अगर कोई व्यक्ति पहले मोडल नियंत्रक पर हिट रद्द करता है और फिर मूल मोडल नियंत्रक पर तुरंत रद्द हो जाता है जो क्रैश को ट्रिगर कर सकता है? –

+0

मुझे लगता है कि यह वही बात है - एक वीसी ऐप्पल के सिस्टम में कहीं भी अटक गया है। – DenNukem

संबंधित मुद्दे