[UIColor colorWithPatternImage:]
을 사용하고 있으며 전달 된 이미지를 유지할 것으로 예상됩니다. 전달 된 이미지가 0이면 할당이 취소되고 색상이 그려지면 충돌이 발생합니다. 이 예상되는 동작이나 버그입니까?[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
저는 비슷한 문제가 있다고 생각합니다. 이미지를 실제로 표시했는지 확인한 다음 그 이미지를 제로로 설정할 수있었습니다. 그러므로 주 스레드의 한주기를 기다려야합니다! –