का सही तरीके से उपयोग कैसे करें, मुझे विकास में अपने आईफोन ऐप के साथ एक बहुत ही अजीब दुर्घटना का सामना करना पड़ रहा था। ऐसा लगता है कि हर बार जब मैं अपने ऐप को किसी मित्र को दिखाता हूं तो यह दुर्घटनाग्रस्त हो जाएगा, लेकिन यह कभी भी क्रैश नहीं होगा। मर्फी के कानून पहलू द्वारा आम तौर पर रहस्यमय होने के बाद, मैंने क्रैश के पैटर्न को निर्धारित किया - न्यूयॉर्क सिटी सबवे। सबवे का उपयोग करने के बाद मेरा ऐप लगातार क्रैश हो जाता है। मैंने Reachability
के उपयोग के लिए समस्या का पता लगाया है। किसी भी नेटवर्क स्थिति (हवाई जहाज मोड सहित नहीं) में इसका उपयोग करने के बाद अगली बार ऐप क्रैश हो जाता है। मैं एप्पल के दिशानिर्देशों का पालन कर रहा हूं और Reachability
के साथ कनेक्शन के लिए जांच कर रहा हूं, इससे पहले कि मैं कोई अन्य नेटवर्क ऑपरेशंस करता हूं, लेकिन मुझे इसे कॉल करने के बारे में कुछ विवादित दस्तावेज मिल गए हैं।पहुंचने की स्थिति के बाद पहुंच योग्यता दुर्घटना का कारण बनती है - रीचैबिलिटी अतुल्यकालिक रूप से
वर्तमान में मैं कुछ इस तरह कर रहा हूँ:
-(BOOL)reachable {
Reachability *r = [Reachability reachabilityWithHostName:@"www.stackoverflow.com"];
NetworkStatus internetStatus = [r currentReachabilityStatus];
if(internetStatus == NotReachable) {
return NO;
}
return YES;
}
जो मैं एक विधि viewDidAppear से कहा जाता है के साथ तुल्यकालिक फोन कर रहा हूँ।
if ([self reachable]== YES) {
... do network stuff ...
जो Reachability Guide for iOS 4
मेरा प्रश्न से कोड पर आधारित है: वहाँ Reachability
के समुचित उपयोग है कि इस त्रुटि का ख्याल रखना और एक 3 जी या वाईफ़ाई नेटवर्क के अभाव संभाल लेंगे है? क्या मुझे एक और थ्रेड बनाने की आवश्यकता है या सिंक्रोनस कॉल को हटाने के लिए कुछ करना है?
यहां, वैसे, क्रैश लॉग है जो मुझे लगता है कि जब मेरा ऐप दुर्घटनाग्रस्त हो जाता है, जो मुझे लगता है कि यह एक तुल्यकालिक/असीमित समस्या है।
Application Specific Information: (app name) failed to resume in time Elapsed total CPU time (seconds): 3.280 (user 1.770, system 1.510), 33% CPU Elapsed application CPU time (seconds): 0.040, 0% CPU Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0: 0 libsystem_kernel.dylib 0x30747fbc kevent + 24 1 libsystem_info.dylib 0x30abec4e _mdns_search + 586 2 libsystem_info.dylib 0x30abfb72 mdns_addrinfo + 370 3 libsystem_info.dylib 0x30abfd68 search_addrinfo + 76 4 libsystem_info.dylib 0x30ac1bcc si_addrinfo + 1080 5 libsystem_info.dylib 0x30abd0b2 getaddrinfo + 78 6 SystemConfiguration 0x311b4256 __SCNetworkReachabilityGetFlags + 962 7 SystemConfiguration 0x311b4f1e SCNetworkReachabilityGetFlags + 98
धन्यवाद - इसलिए यदि मुख्य धागा मारा गया था, तो क्या मैं इसे देखकर देख रहा था जब मैं इसे सिंक्रनाइज़ कर रहा था? (आवेदन अगली बार दुर्घटनाग्रस्त होने के बाद सिंक्रोनस चेक के बाद चला जाता है) –