PieChartView.mというファイルに次のコードを書きました。
#pragma mark DrawingDelegate
@interface DrawingDelegate : NSObject
@end
@implementation DrawingDelegate
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
//nothing here yet...
}
#pragma mark PieChartView
@implementation PieChartView
@synthesize pie_layer;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
float pie_layer_width = 300.f;
float pie_layer_height = 160.f;
float pie_layer_PosX = 7.f;
float pie_layer_PosY = 20.f;
DrawingDelegate* layerDelegate = [[DrawingDelegate alloc] init];
pie_layer = [[CALayer alloc] init];
//when commenting the following assignment the app no longer crashes
pie_layer.delegate = layerDelegate;
pie_layer.bounds = CGRectMake( 0.f, 0.f, pie_layer_width, pie_layer_height );
pie_layer.backgroundColor = [[UIColor whiteColor] CGColor];
pie_layer.position = CGPointMake( pie_layer_width/2+pie_layer_PosX, pie_layer_height/2+pie_layer_PosY );
pie_layer.cornerRadius = 10.f;
CGFloat components[4] = { 0.0, 0.0, 0.0, 1.0 };
CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceRGB();
CGColorRef black = CGColorCreate( colorspace, components );
pie_layer.borderColor = black;
pie_layer.borderWidth = 1.f;
pie_layer.shadowRadius = 5.f;
pie_layer.shadowColor = black;
CGColorRelease( black );
CGColorSpaceRelease(colorspace);
pie_layer.shadowOffset = CGSizeMake( 0.f, 5.f ),
pie_layer.shadowOpacity = 0.75f;
[self.layer insertSublayer:pie_layer above:self.layer];
[pie_layer setNeedsDisplay];
}
return self;
}
「pie_layer.delegate=layerDelegate;」という行を実行している限り、アプリがクラッシュします。クラッシュは、指定されたスクリーンショットのように見えます。
なぜこれが起こるのですか?私のコードの何が問題になっていますか?
別のより詳細なスタックトレースは次のとおりです。