Hallo,
Im folgenden Code tritt in der Zeile:
ein EXC_BAD_ACCESS-Fehler auf, den ich mir nicht erklären kann. Die drawRect:-Methode der MainView-Klasse wird 33 Mal pro Sekunde aufgerufen und nur dann, wenn das UIImage *printImage noch nicht initialisiert ist, soll die "createBitmapContext"-Methode aufgerufen werden.
Alles anzeigen
weiß jemand, wie ich diesen Fehler beheben kann?
Danke im Voraus
Im folgenden Code tritt in der Zeile:
ein EXC_BAD_ACCESS-Fehler auf, den ich mir nicht erklären kann. Die drawRect:-Methode der MainView-Klasse wird 33 Mal pro Sekunde aufgerufen und nur dann, wenn das UIImage *printImage noch nicht initialisiert ist, soll die "createBitmapContext"-Methode aufgerufen werden.
Quellcode
- #import "MainView.h"
- @implementation MainView
- - (id)initWithFrame:(CGRect)frame
- {
- self = [super initWithFrame:frame];
- if (self) {
- planet = [UIImage imageNamed:@"Planet.png"];
- baum = [UIImage imageNamed:@"Baum.png"];
- }
- return self;
- }
- - (void)drawRect:(CGRect)rect
- {
- if (!printImage) {
- printImage = [self createBitmapContext];
- }
- [printImage drawAtPoint:CGPointMake(0, 0)];
- }
- - (UIImage *) createBitmapContext {
- CGColorSpaceRef cSpc = CGColorSpaceCreateDeviceRGB();
- CGImageRef CGBaum = [baum CGImage];
- CGImageRef CGPlanet = [planet CGImage];
- center = CGPointMake(160, 240);
- int trees = (arc4random()%50)+1;
- int rad = (arc4random()%40) + 80;
- CGContextRef bitmap = CGBitmapContextCreate(NULL,
- 320,
- 480,
- 8,
- 1280,
- cSpc,
- kCGImageAlphaPremultipliedLast);
- CGContextDrawImage(bitmap, CGRectMake(center.x-rad, center.y-rad, 2*rad, 2*rad), CGPlanet);
- for (int i=0; i<trees; i++) {
- int angle = arc4random()% 360;
- height = (arc4random()% 20)+40;
- dgr = (angle * (M_PI/180));
- CGContextSaveGState(bitmap);
- CGContextTranslateCTM(bitmap, center.x + sinf(dgr) * (rad + height - 5), center.y + cosf(dgr) * (rad + height - 5));
- CGContextRotateCTM(bitmap, 2*M_PI-dgr);
- CGContextDrawImage(bitmap, CGRectMake(0-width/2, 0-height, height/1.5, height), CGBaum);
- CGContextRestoreGState(bitmap);
- }
- CGImageRef rI = CGBitmapContextCreateImage(bitmap);
- UIImage *img = [UIImage imageWithCGImage:rI];
- printImage = img;
- CGContextRelease(bitmap);
- return img;
- }
- @end
weiß jemand, wie ich diesen Fehler beheben kann?
Danke im Voraus