जब मेरा प्रोग्राम लाइन पर जाता है: [userNumSequence addObject: [NSNumber numberWithInteger: क्रम संख्या]]; यह त्रुटि हो जाती है: प्रोग्राम प्राप्त संकेत: "EXC_BAD_ACCESS"।
सभी मैं करना चाहता हूँ, एक पूर्णांक को सरणी में संग्रहीत करना है।
// JBNumberGeneration M #import "JBNumber जनरेशन।" @ कार्यान्वयन JBNumber जनरेशन - (आईडी) init {if (self = [super init]) {userNumSequence = [NSMutableArray arrayWithCapacity: 0]; } स्वस्थ वापसी; } - (IBAction) logSequenceNumber: (आईडी) प्रेषक {NSString * titleOfButton = [प्रेषक शीर्षक]; इंट अनुक्रमांक संख्या = [शीर्षक ओफ़बटन पूर्णांक वैल्यू]; मैं = 0; [यूजर न्यूज़ स्यून्डेन्स ऐड ऑब्जेक्ट: [एनएसएनम्बर नंबर विथ इंटेगर: अनुक्रम संख्या]]; // इंट वर्तमानन्यूम = [((एनएसएनम्बर *) [यूजर न्यूम स्यूक्वेंसी ऑब्जेक्टअटइंडएक्स: आई]) पूर्णांक वैल्यू;; // NSLog (@ "% i", वर्तमानन्यूम); इंट गणना = [उपयोगकर्ता संख्या की गणना]; एनएसएलॉग (@ "ऐरे आकार:% i", गिनती); i ++; } @ एंड // JBNumberGeneration.h #import & lt; कोको / कोकोआ एच & gt; @ इंटरफेस जेबीबीएमंबरजनन: एनएसओबीज {आईबीओटलेट एनएसटीईक्स्टफिल्ड * डिस्प्ले लेबल; इंट रैंडम; पूर्णांक स्तर; Int i; NSMutableArray * userNumSequence; } - (IBAction) logSequenceNumber: (आईडी) प्रेषक; @end
EXC_BAD_ACCESS
आमतौर पर तब होता है जब आप एक्सेस करने का प्रयास करते हैं एक सदस्य जो पहले से ही वितरित किया गया है क्योंकि आप [NSMutableArray arrayWithCapacity:]
अपने init फ़ंक्शन में कॉल कर रहे हैं, यह पहले से ही logSequenceNumber द्वारा जारी किया गया हो सकता है: (आईडी) प्रेषक
कहा जाता है अपने @implementation
@property (nonatomic, retain) NSMutableArray * userNumSequence
को अपने @interface
और @ synthesize userNumSequence
में जोड़ने का प्रयास करें । फिर कॉल करें self.userNumSequence = [NSMutableArray arrayWithCapacity: 0]
अपने init विधि में इसे dealloc में शून्य
पर सेट करने के लिए मत भूलना।
संपादित करें: इसके अलावा, बस नामांकन के मानकों को इस तरह से साफ करना है:
- यदि आप
[[ऑब्जेक्ट आलोक] initSomehow]
, या [ऑब्जेक्ट को बनाए रखने]
को कॉल करते हैं, तो इसे जारी करने के लिए आप जिम्मेदार हैं (कॉलिंग init
बनाए रखने
को कॉल करें। - यदि आप
[ऑब्जेक्ट वस्तु के साथ कुछ: कुछ]
की तरह कॉल करते हैं, तो ये आम तौर पर आटोरायलेटेड होते हैं और भविष्य में कुछ समय बाद ही रिलीज़ हो जाएंगे। आपको ये कभी नहीं मानना चाहिए कि इन्हें दायरे से परे मौजूद हैं और वे पैदा किए गए हैं। कोको प्रलेखन के अनुसार, क्षेत्र में कॉल स्टैक शामिल है। यदि a:
कॉल b:
जो c:
, और c:
को एक ऑटोरेलेज़ ऑब्जेक्ट देता है, तो यह हो सकता है उपयोग करने के लिए a:
के लिए सभी तरह से सुरक्षित रूप से पारित किया गया। इसके अलावा यह जारी किया जाता है। यह कम से कम ऑटोरेक्लीज़ के स्पष्टीकरण के बारे में मेरी व्याख्या है।
यदि आपको अपने ऑब्जेक्ट के जीवन के लिए कुछ का उपयोग करने की ज़रूरत है, इसे प्राप्त होने पर इसे बनाए रखें और इसे dealloc में छोड़ दें
।
Comments
Post a Comment