मैं अपने iPhone परियोजना में इस लाइन पर एक EXC_BAD_ACCESS (SIGBUS) हो रही है में है स्टंप यह है कि मुझे समझ में नहीं आता कि यह रेखा कैसे दुर्घटनाग्रस्त हो सकती है, क्योंकि अगर कथन का मतलब शून्य के लिए जांचना है। क्या मैं उद्देश्य-सी कार्यों के तरीके को गलत समझ रहा हूं, या क्रैश स्टेटमेंट में लाइन नंबरों में कभी-कभी गलत रेखा होती है?अगर (चर) के रूप में अगर एक ही ऑब्जेक्टिव-सी
उत्तर
सिर्फ इसलिए कि एक चर को nil
के अलावा किसी अन्य मान पर सेट किया गया है, इसका मतलब यह नहीं है कि यह वैध ऑब्जेक्ट को इंगित कर रहा है। उदाहरण के लिए:
id object = [[NSObject alloc] init];
[object release];
NSLog(@"%@", object); // Not nil, but a deallocated object,
// meaning a likely crash
आपका टाइमर शायद पहले से ही मिल गया (या शायद सब पर बनाया नहीं किया गया है?) छुटकारा गया है, लेकिन चर शून्य करने के लिए सेट नहीं किया गया।
वे वही होना चाहिए। शायद लाइन नंबर वास्तव में गलत है।
अपने कोड में उसके पास अन्य संभावित त्रुटियों की तलाश करें और देखें कि आपको कुछ भी मिल रहा है या नहीं।
मैं बस इसी तरह की समस्या में भाग गया, इसलिए यहां एक और उदाहरण है कि आपके जैसे असफल होने की जांच हो सकती है।
मेरे मामले में, मैं इस तरह एक शब्दकोश से मूल्य हो रही थी:
NSString *text = [dict objectForKey:@"text"];
बाद में, मैं इस तरह चर का उपयोग कर रहा था:
if (text) {
// do something with "text"
}
यह एक EXC_BAD_ACCESS
त्रुटि हुई और कार्यक्रम दुर्घटना।
समस्या यह थी कि मेरे शब्दकोश में NSNull
मूल्यों का उपयोग किया गया था, जहां किसी ऑब्जेक्ट का खाली मूल्य था (इसे JSON से deserialized किया गया था), क्योंकि NSDictionary
शून्य मान नहीं रख सकता है। मैं इस तरह काम कर रहा हूं:
NSString *text = [dict objectForKey:@"text"];
if ([[NSNull null] isEqual:text]) {
text = nil;
}
अरे, मुझे एहसास नहीं हुआ कि NSDictionary शून्य मूल्यों को पकड़ नहीं सकता था। बहुत बढ़िया जवाब। – Ben
- 1. दो '==' समानता ऑपरेटर एक ही 'अगर' स्थिति
- 2. rsync ही अगर फाइल सिस्टम
- 3. अगर वस्तु पहले से ही एक सूची
- 4. jQuery ही अगर एक विशिष्ट रेडियो बटन
- 5. अगर
- 6. एक अगर
- 7. के रूप में अगर मैंने किया जावास्क्रिप्ट
- 8. अपरिभाषित चर का उपयोग में अगर-बयान
- 9. अगर एक फ़ाइल मौजूद
- 10. पार्सिंग अगर-अगर कथन एल्गोरिदम
- 11. अगर
- 12. फ्रीमार्कर: अगर एक कथन में एक enum
- 13. जावा: अगर-रिटर्न-अगर रिटर्न बनाम अगर-रिटर्न-elseif-रिटर्न
- 14. अगर ... बनाम बनाम अगर() {वापसी}
- 15. अगर एक नौकरी Quartz1.6
- 16. एक अगर हालत
- 17. अगर एक मूल्य समूह
- 18. एक अगर एक लिंक इस
- 19. अगर एक NSData UIImage
- 20. अगर एक MemoryMappedFile उपयोग
- 21. अगर एक फ़ाइल अजगर
- 22. jQuery शामिल करें, अगर पहले से ही
- 23. jQuery कोड निष्पादित ही अगर div मौजूद
- 24. रूबी अगर .. els अगर .. एक और लाइन पर?
- 25. GDB: अगर तोड़ने चर बराबर मूल्य
- 26. चेक अगर एक मूल्य के एक सरणी
- 27. जावास्क्रिप्ट अगर
- 28. प्रदर्शन एक मान्यता ही अगर अन्य सभी सत्यापन पारित
- 29. अगर ग्राहक स्क्रिप्ट पहले से ही एक आंशिक पोस्टबैक
- 30. jQuery: अगर माउस एक तत्व
सही समझ में आता है, धन्यवाद। मुझे एहसास हुआ कि मैंने अपना टाइमर बरकरार रखा नहीं है, जो मुझे करना चाहिए। – rustyshelf
टाइमर को बनाए रखना सामान्य रूप से आवश्यक नहीं है। यदि आप initWithFireDate के साथ टाइमर बनाते हैं ..., यह स्वतः नहीं किया जाता है। और एक बार एक टाइमर को रनलॉप में जोड़ा जाता है (या तो addTimer या शेड्यूल टाइमर ... विधियों में से एक), रनलोप इसे तब तक बरकरार रखता है जब तक कि यह समाप्त न हो जाए। – Chuck
मैंने इसे एनएसटीमर शेड्यूल टाइमर विथटाइम इंटरवल के साथ बनाया जो मुझे लगता है कि ऑटो रिलीज़ है। InitWithFireDate बेहतर माना जाता है? – rustyshelf