N
nima
Aktives Mitglied
Thread Starter
- Dabei seit
- 10.04.2008
- Beiträge
- 149
- Reaktionspunkte
- 2
Hi,
also erstmal vorweg, ich bin noch nicht so lange bei Objective-C. Jetzt habe ich eine Klasse geschrieben. So weit läuft auch der Rest. Nur beim Aufruft dieser Funktion verabschiedet sich mein Programm. Bzw. Ich kann die Funktion einmal aufrufen. Ein zweites mal geht nicht.
Der Crash liegt denke ich mal an der roten Zeile. In der Konsole bekomme ich "BAD_ACCESS" zurück. Ich erklähre mir das ganze so.
Beim ersten Aufruf wird NSBitmapImageRep mit dem CIImage (inputImage) initialisiert. Wird die Funktion ein zweites mal Aufgerufen, wird in der IF-Abfrage das bmpRep zerstört. So kann es dann nicht mehr initialisiert werden. Oder so.
BAD_ACCESS sagt mir nach meiner Interpretation, ich versuchte auf was zuzugreifen was gar nicht da ist.
Mein Problem liegt jetzt darin dass ich nicht genau weiss, wie ich den Fehler umgehen kann. Das bmpRep muss aber bei jedem Neuaufruf der Funktion zerstört werden, ja sonst immer im Speicher bleiben würde. So würde dann nach mehreren Aufrufen ja der Speicherhunger des Programms enorm. Ausserdem muss das bmpRep im Header deklariert sein, da ich es noch in anderen Funktionen verwenden möchte.
Vielen, Vielen Dank & Grüße,
Nico
also erstmal vorweg, ich bin noch nicht so lange bei Objective-C. Jetzt habe ich eine Klasse geschrieben. So weit läuft auch der Rest. Nur beim Aufruft dieser Funktion verabschiedet sich mein Programm. Bzw. Ich kann die Funktion einmal aufrufen. Ein zweites mal geht nicht.
Code:
- (void)setTexture:(CIImage*)inputImage {
NSLog(@"RenderCIImageOpenGL: setTexture()");
if(bmpRep) {
[bmpRep release];
glDeleteTextures(1, &txID);
}
if(!inputImage) { return; }
[COLOR="Red"]bmpRep = [[[NSBitmapImageRep alloc] initWithCIImage:inputImage] retain];[/COLOR]
bmpRep = [NSBitmapImageRep imageRepWithData:[bmpRep TIFFRepresentation]];
imageInfo.height = [bmpRep size].height;
imageInfo.width = [bmpRep size].width;
//[self initGL];
}
Beim ersten Aufruf wird NSBitmapImageRep mit dem CIImage (inputImage) initialisiert. Wird die Funktion ein zweites mal Aufgerufen, wird in der IF-Abfrage das bmpRep zerstört. So kann es dann nicht mehr initialisiert werden. Oder so.
BAD_ACCESS sagt mir nach meiner Interpretation, ich versuchte auf was zuzugreifen was gar nicht da ist.
Mein Problem liegt jetzt darin dass ich nicht genau weiss, wie ich den Fehler umgehen kann. Das bmpRep muss aber bei jedem Neuaufruf der Funktion zerstört werden, ja sonst immer im Speicher bleiben würde. So würde dann nach mehreren Aufrufen ja der Speicherhunger des Programms enorm. Ausserdem muss das bmpRep im Header deklariert sein, da ich es noch in anderen Funktionen verwenden möchte.
Vielen, Vielen Dank & Grüße,
Nico