मुझे पता है कि मैं जिस समस्या को रेखांकित करने जा रहा हूं उसे ठीक करने के लिए, हालांकि, मैं थोड़ा सा परेशान हूं कि आईओएस सिम्युलेटर में कोड परिदृश्य क्यों काम करता है लेकिन मेरे आईपैड पर नहीं।आईओएस सिम्युलेटर में आईओएस सिम्युलेटर में एक CGColor प्रॉपर्टी काम करने के लिए मौजूदा CGColor को असाइन करना। क्यूं कर?
मेरे पास एक विधि है जो विभिन्न गुणों की जांच करती है, और उसके बाद संपत्ति की स्थिति के आधार पर CALayer
का पृष्ठभूमि रंग सेट करती है। निम्नलिखित कोड रंग असाइनमेंट की मेरी विधि के समान है:
//This will be the CALayer BGColor...
CGColor c = UIColor.blueColor.CGColor; //Blue is the default
switch (myState)
{
case state_one:
c = UIColor.greenColor.CGColor;
//... more code ...
break;
case state_two:
c = UIColor.redColor.CGColor;
//... more code ...
break;
case state_three: //multiple cases are like the state_three case.
//Other code, but I don't need to assign the color. Blue works...
}
myCALayer.backgroundColor = c; //Oh-noes!!! Here we get the dreaded EXC_BAD_ACCESS on iPad
//...more code dealing with the layer.
उपरोक्त कोड सिम्युलेटर में बिना किसी परेशानी के काम करता है। हालांकि, जब मैं अपने आईपैड पर एप्लिकेशन चलाता हूं, तो यह backgroundColor
असाइनमेंट पर दुर्घटनाग्रस्त हो जाता है।
मैं इसे CGColor
चर से छुटकारा पाने और सीधे मेरे स्विच/केस स्टेटमेंट के भीतर से पृष्ठभूमि रंग असाइन करके इसे ठीक कर सकता हूं, और यही वह है जो मैं करने की योजना बना रहा हूं।
हालांकि, मैं उत्सुक हूं। यह एक पर्यावरण में क्यों काम करेगा, न कि दूसरे?
अद्यतन
युगल बातें। सबसे पहले, यह उल्लेखनीय है कि यह आईओएस 5 उपकरणों को लक्षित करने, एक्सकोड 4.2 का उपयोग करके एक एआरसी परियोजना है। साथ ही, मेरा रंग असाइनमेंट कोड पूरी तरह से ऐसा नहीं दिखता है क्योंकि मेरे पास ऐसा परिभाषा है जो मैं इन रंगों को सेट करने के लिए उपयोग करता हूं क्योंकि उन्हें मेरे पूरे एप्लिकेशन में संदर्भित किया जाता है।
#define BLUE [UIColor colorWithRed:8.0/255.0 green:80.0/255.0 blue:150.0/255.0 alpha:1.0].CGColor
#define GREEN (UIColor.blueColor.CGColor)
//...and there are about 6 other colors
मैं अपने कोड को आसान बनाने की वजह संकलक मेरी परिभाषित करने के लिए अपने refs को refs बदलना चाहिए की कोशिश की:
यह वही है #define
बयान के कुछ ही लग रहा है की तरह है। फिर भी, मामले में बस उल्लेख करने लायक है।
आप प्रत्येक निर्माण में QuartzCore ढांचा शामिल करना न भूलें की थी? –
मेरा 'CGColor' के साथ भी निर्माण नहीं करेगा, शायद आपका मतलब 'CGColorRef' –
मैंने ढांचा जोड़ा है, और हेडर को कोड फ़ाइल के भीतर से संदर्भित किया है जो इस असाइनमेंट को बना रहा है। – RLH