Hallo liebes Forum,
ich habe meine App heute mit Instruments analysiert und dabei festgestellt, dass es beim CMMotionManager wohl einen Memory Leak geben muss:
Alles anzeigen
Definiert habe ich die Klasse als SingleInstance.
Wenn ich folgendes auskommentiere, wird kein Speicher mehr allokiert:
Alles anzeigen
Ich verstehe einfach nicht wie ich den Speicher wieder freigeben kann der hier über CMAccelerometerData *accelerometerData allokiert wird. Immerhin sind das einige MB pro Minute.
Was kann ich hier tun, um das in den Griff zu bekommen?
Die Dokumentation von Apple konnte mir bisher nicht weiterhelfen und Google hat mich auch nicht schlauer gemacht.
Ich würde mich sehr über eure Hinweise freuen. Gerne könnt ihr meinen Code auch direkt editieren.
Vielen Dank im Voraus!
OsnaTiger
ich habe meine App heute mit Instruments analysiert und dabei festgestellt, dass es beim CMMotionManager wohl einen Memory Leak geben muss:
PHP-Quellcode
- motionManager = [[CMMotionManager alloc] init];
- NSOperationQueue *queue = [NSOperationQueue currentQueue];
- if (motionManager.accelerometerAvailable) {
- motionManager.accelerometerUpdateInterval = (1./CONST_fps);
- [motionManager startAccelerometerUpdatesToQueue:queue withHandler:^(CMAccelerometerData *accelerometerData, NSError *error)
- {
- // Hier wird eine Menge Speicher allokiert, aber nicht wieder freigegeben!
- }];
Definiert habe ich die Klasse als SingleInstance.
Wenn ich folgendes auskommentiere, wird kein Speicher mehr allokiert:
PHP-Quellcode
- motionManager = [[CMMotionManager alloc] init];
- NSOperationQueue *queue = [NSOperationQueue currentQueue];
- if (motionManager.accelerometerAvailable) {
- motionManager.accelerometerUpdateInterval = (1./CONST_fps);
- /*
- * Dieser Block wird auskommentiert, kein Speicher wird mehr allokiert
- [motionManager startAccelerometerUpdatesToQueue:queue
- withHandler:^(CMAccelerometerData *accelerometerData, NSError *error)
- {
- // Hier wird eine Menge Speicher allokiert, aber nicht wieder freigegeben!
- }];
- */
Ich verstehe einfach nicht wie ich den Speicher wieder freigeben kann der hier über CMAccelerometerData *accelerometerData allokiert wird. Immerhin sind das einige MB pro Minute.
Was kann ich hier tun, um das in den Griff zu bekommen?
Die Dokumentation von Apple konnte mir bisher nicht weiterhelfen und Google hat mich auch nicht schlauer gemacht.
Ich würde mich sehr über eure Hinweise freuen. Gerne könnt ihr meinen Code auch direkt editieren.
Vielen Dank im Voraus!
OsnaTiger