Я использую [UIColor colorWithPatternImage:]
и ожидал, что он сохранит полученное изображение. Когда я потеряю изображение, которое передано, оно освобождается, и любая попытка рисования с цветом приводит к сбою. Это ожидаемое поведение или ошибка?Имеет ли [UIColor colorWithPatternImage:] сохранение UIImage?
// MyCustomUIImage is a sub-class with it's own custom data provider
UIImage* encodedImage = [[MyCustomUIImage alloc] initWithContentsOfFile:fileName];
UIColor* color = [UIColor colorWithPatternImage:encodedImage];
// color is then assigned to a singleton so it is never deallocated
// ... later ...
CGContextSetLineCap(ctx, kCGLineCapRound);
CGContextSetLineJoin(ctx, kCGLineJoinRound);
CGContextSetInterpolationQuality(ctx, kCGInterpolationNone);
CGContextSetMiterLimit(ctx, 0.1f);
CGContextSetShouldAntialias(ctx, YES);
CGContextSetAllowsAntialiasing(ctx, YES);
CGContextAddPath(ctx, self.path);
CGContextSetLineWidth(ctx, width);
CGContextSetStrokeColorWithColor(ctx, color.CGColor);
CGContextSetFillColorWithColor(ctx, NULL);
if (self.glowAmount > 0.0f && self.glowColor.alpha > 0.0f)
{
CGContextSetShadowWithColor(ctx, CGSizeZero, self.glowAmount, self.glowColor.CGColor);
}
CGContextSetBlendMode(ctx, blendMode);
// *** CRASHES HERE ***
CGContextDrawPath(ctx, kCGPathStroke);
Вам не нужно беспокоиться о том, сохраняется ли изображение, если экземпляр UIColor правильно управляется, и вы не пытаетесь изменить изображение самостоятельно после потери владельца. Скорее всего, это ошибка в вашем коде. – NSAdam
Возможно, может показаться некоторый код. – Mike
Я думаю, что у меня была аналогичная проблема, я должен был убедиться, что изображение действительно отображается первым, прежде чем я смог установить его на ноль. Поэтому вам нужно подождать один цикл вашего основного потока! –