интересно, если кто-то может мне помочь, но в то же время, надеюсь, я могу помочь кому-то еще тоже ...CG Gradient Краш
У меня эта проблема с CG Градиент, который работает в тренажере, но аварии на устройстве , Я искал и читал «CG Gradient работает на симуляторе, но не на iPhone», и я думаю, что это аналогичная проблема, то есть из-за меня с использованием ARC, и это слишком рано выпускает CGFloat, но я не могу получить свою голову о том, как реализовать предлагаемые исправления в отношении моего кода. (Пожалуйста, см. Код внизу)
Итак, я был бы признателен, если бы кто-нибудь мог помочь мне с этой частью?
В любом случае, авария настолько плоха, что кажется, что он продолжает запускать приложение на устройстве в действительно странном состоянии, я могу удалить приложение на устройстве и попытаться запустить его снова, если нарушивший код закомментирован, но он по-прежнему вызывает сбой. Независимо от того, что я сделал, это не позволит приложению снова запускаться на устройстве. Оказывается, после нескольких часов царапин на голове мне потребовалось перезагрузить iPad-устройство, которое я пытался развернуть, поскольку он все еще держится за профиль подготовки, несмотря на то, что он закрыт/удален с устройства.
Надеюсь, это имеет смысл и может помочь кому-то тоже.
Благодаря
CGFloat colors [] = {
0, 0, 0, 0,
0, 0, 0, 0
};
CGFloat colors2 [] = {
190.00/255.00, 211.00/255.00, 60.00/255.00, 1.0,
138.00/255.00, 153.00/255.00, 43.00/255.00, 1.0
};
CGFloat colors3 [] = {
159.00/255.00, 164.00/255.00, 39.00/255.00, 1.0,
110.00/255.00, 120.00/255.00, 27.00/255.00, 1.0
};
CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient;
if ([email protected]"1") {
gradient = CGGradientCreateWithColorComponents(baseSpace, colors2, NULL, 2);
NSLog(@"which state has changed");
} else if ([email protected]"2"){
gradient = CGGradientCreateWithColorComponents(baseSpace, colors3, NULL, 2);
} else if ([email protected]"3"){
gradient = CGGradientCreateWithColorComponents(baseSpace, colors3, NULL, 2);
} else if ([email protected]"0"){
gradient = CGGradientCreateWithColorComponents(baseSpace, colors, NULL, 2);
}
CGColorSpaceRelease(baseSpace), baseSpace = NULL;
CGContextSaveGState(context);
CGContextMoveToPoint(context, (width/4*0)+5, 0);
CGContextAddLineToPoint(context, (width/4*0)+30, self.frame.size.height-3);
CGContextAddLineToPoint(context, (width/4*1)+30, self.frame.size.height-3);
CGContextAddLineToPoint(context, (width/4*1)+5, 0);
CGContextAddLineToPoint(context, (width/4*0)+5, 0);
CGContextClip(context);
CGPoint startPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMinY(rect));
CGPoint endPoint = CGPointMake(CGRectGetMidX(rect), CGRectGetMaxY(rect));
CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0);
CGGradientRelease(gradient), gradient = NULL;
CGContextRestoreGState(context);
CGContextFillPath(context);
Пожалуйста, сообщите подробности аварии, или никто не сможет вам помочь. Если приложение продолжает работать, это не сбой. – jrturton
спасибо за ответ, у меня нет данных о сбоях, но опубликуйте его как можно скорее. Из памяти он выделяет его в разделе делегирования приложения, но также указывает строку с CGContextDrawLinearGradient (контекст, градиент, startPoint, endPoint, 0); – Deadfrog