पर मेरे पास एक कोड है जो बिना किसी समस्या के संकलित करता है। यह आईफोन सिम्युलेटर पर अच्छा प्रदर्शन करता है, लेकिन मेरे डिवाइस पर, मुझे एक EXC_BAD_ACCESS मिलता है।सीजी ग्रेडियंट सिम्युलेटर पर चलता है, लेकिन आईफोन
यह ढाल बनाने के लिए एक सहायक कार्य में होता है। मैंने ऐसा करने के लिए this tutorial का पालन किया। इस प्रकार कोड रहा है:।
- (void) drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGColorRef whiteColor = [UIColor whiteColor].CGColor;
CGColorRef lightGrayColor = [UIColor colorWithRed:230.0/255.0
green:230.0/255.0
blue:230.0/255.0
alpha:1.0].CGColor;
CGColorRef separatorColor = [UIColor colorWithRed:208.0/255.0
green:208.0/255.0
blue:208.0/255.0
alpha:1.0].CGColor;
CGRect paperRect = self.bounds;
CGRect nameRect = self.nameLabel.frame;
CGPoint sepStartPoint = CGPointMake(nameRect.origin.x,
nameRect.origin.x + nameRect.size.height + 2);
CGPoint sepEndPoint = CGPointMake(nameRect.origin.x + nameRect.size.width,
nameRect.origin.x + nameRect.size.height + 2);
drawLinearGradient(context, paperRect, lightGrayColor, whiteColor);
draw1PxStroke(context, sepStartPoint, sepEndPoint, separatorColor);
}
// Callee, where the problem is
void drawLinearGradient(CGContextRef context,
CGRect rect,
CGColorRef startColor,
CGColorRef endColor)
{
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGFloat locations[] = { 0.0, 1.0 };
NSArray *colors = [NSArray arrayWithObjects:
(__bridge id)startColor,
(__bridge id)endColor,
nil]; // Here is the line
CGGradientRef gradient = CGGradientCreateWithColors(colorSpace,
(__bridge CFArrayRef) colors, locations);
CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));
CGContextSaveGState(context);
CGContextAddRect(context, rect);
CGContextClip(context);
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
CGContextRestoreGState(context);
CGGradientRelease(gradient);
CGColorSpaceRelease(colorSpace);
}
Xcode पर प्रकाश डाला 12 (nil];
त्रुटि पंक्ति के रूप में के साथ एक लाइन
पीटर Hosey के लिए, यहाँ डिबगर उत्पादन है:
(gdb) po startColor
<CGColor 0x1deca0> [<CGColorSpace 0x1d3280> (kCGColorSpaceDeviceGray)] (1 1)
Current language: auto; currently objective-c
(gdb) po endColor
<CGColorSpace 0x1bf120> (kCGColorSpaceDeviceRGB)
(gbd)
मेरे सिम्युलेटर (और आईफोन) आईओएस 5 पर चलता है।
इस दुर्घटना का कारण क्या हो सकता है?
संभवत: प्रारंभ में से एक का चयन करें या अंत रंग एक खतरनाक सूचक है; क्या आप ड्रॉलाइनरग्राइडेंट को कॉल करने वाले कोड को दिखा सकते हैं? – Tommy
मैंने कॉलिंग कोड – ksol
के साथ गिस्ट को अपडेट किया है यदि आप डीबगर कंसोल में 'po startcolor 'और' po endcolor' टाइप करते हैं, तो आपको क्या मिलता है? –