के तहत CAShapeLayer के साथ [UIBezierPath CGPath] का उपयोग करके क्रैश करें मुझे [UIBezierPath CGPath]
का उपयोग करके CAShapeLayer
एआरसी के तहत एक बीएडी एक्सेस त्रुटि मिल रही है। मैं विभिन्न तरीकों से पूरा करने की कोशिश की है, लेकिन मैं स्पष्ट नहीं कर रहा हूँ कि अगर समस्या है। मैं makeToPath
विधि का परिणाम का उपयोग करने के दुर्घटना पृथक हैएआरसी
maskLayer = [CAShapeLayer layer];
maskLayer.path = [self makeToPath];
लेकिन इस दुर्घटना नहीं करता है:
maskLayer = [CAShapeLayer layer];
maskLayer.path = [self makeFromPath];
वहाँ makeToPath
द्वारा बनाई पथ के साथ कुछ अवैध है? मैं एक बार मैं इस दुर्घटना को हल एक CABasicAnimation
साथ रास्तों को और से इस्तेमाल की योजना बना रहा हूँ। सही एआरसी UIBezierPath
से CGPathRef
रों के लिए ब्रिजिंग क्या है?
-(CGPathRef)makeToPath
{
UIBezierPath* triangle = [UIBezierPath bezierPath];
[triangle moveToPoint:CGPointZero];
[triangle addLineToPoint:CGPointMake(self.view.frame.size.width,0)];
[triangle addLineToPoint:CGPointMake(0, self.view.frame.size.height)];
[triangle closePath];
return [triangle CGPath];
}
-(CGPathRef)makeFromPath
{
UIBezierPath*rect = [UIBezierPath bezierPathWithRect:self.view.frame];
return [rect CGPath];
}
अद्यतन तो मैं नीचे एक जवाब प्रति मेरी ज फ़ाइल बदल लेकिन मैं अभी भी दुर्घटना
-(CGPathRef)makeToPath CF_RETURNS_RETAINED;
-(CGPathRef)makeFromPath CF_RETURNS_RETAINED;
मैं भी बना रही है मेरी तरीकों जवाब here (प्रति एक UIBezierPath
उदाहरण वापसी करने की कोशिश की हो रही है नीचे दिखाया गया है)। अभी भी कोई सफलता नहीं है। कोई भी मुझे इसे ठीक करने के तरीके पर लंबे समय तक स्पष्टीकरण देना चाहता है?
maskLayer.path = [[self makeToPath] CGPath];// CRASHES
morph.toValue = CFBridgingRelease([[self makeToPath] CGPath]);// CRASHES
-(UIBezierPath*)makeToPath
{
UIBezierPath* triangle = [UIBezierPath bezierPath];
[triangle moveToPoint:CGPointZero];
[triangle addLineToPoint:CGPointMake(self.view.frame.size.width,0)];
[triangle addLineToPoint:CGPointMake(0, self.view.frame.size.height)];
[triangle closePath];
return triangle;
}
के संभावित डुप्लिकेट [EXC \ _ARM \ _DA \ _ALIGN त्रुटि जब एक डिवाइस पर चल] (http: // stackoverflow.com/questions/14129785/exc-arm-da-align-error-when-running-on-a-device) –
मैं का उपयोग करें कि अंतिम वाक्य रचना, होने '' makeToPath' लौट UIBezierPath * 'और उसके बाद का उपयोग कर' maskLayer। पथ = [[आत्म makeToPath] CGPath]; ', हर समय। लेकिन मैं तुरंत 'मास्कलेयर' का उपयोग कर रहा हूं, उदा। '[self.view.layer addSublayer: मास्कलेयर]'। अपना 'पथ' सेट करने के बाद आप 'मास्कलेयर' के साथ क्या कर रहे हैं? क्या आप हमें दिखा सकते हैं? – Rob
@Rob - मैं कुछ कोड साफ, 'झपकी debugger' भाग गया और अब यह काम करता है। –