Ich habe ein wirklich seltsames Problem mit GeoFire. Ich werde wetten, dass ich irgendwo ein Problem verursacht habe, aber jetzt, mit der sehr begrenzten Menge an Code-Änderung, sind 2 wichtige Probleme aufgetaucht:GeoFire Abfrage dauert einige Minuten, um zu reagieren und Speicherverlust zu verursachen
1) GeoFire GFQuery braucht eine lange Zeit, um zu antworten. Es dauert 3 Minuten, bis GFQuery endlich den ONLY-Schlüssel in einem kleinen 300-Meter-Kreis zurückgibt. Der einzige Code, den ich hinzugefügt haben, um diese Abfrage zu starten, ist dies:
if (!self.circleQuery) {
GeoFire *geoFire = [FirebaseUtils GEOFIRE_REF];
self.circleQuery = [geoFire queryAtLocation:center withRadius:0.3];
[self.circleQuery observeEventType:GFEventTypeKeyEntered withBlock:^(NSString *key, CLLocation *location) {
}];
[self.circleQuery observeEventType:GFEventTypeKeyExited withBlock:^(NSString *key, CLLocation *location) {
}];
[self.circleQuery observeEventType:GFEventTypeKeyMoved withBlock:^(NSString *key, CLLocation *location) {
}];
} else if (![self.circleQuery.center isEqual: center]){
self.circleQuery.center = center;
}
2) nur mit dem angezeigten Code hinzugefügt wurde, ich bin eine große Speicherleck zu sehen, die leiden Instrumente nicht zu kontrollieren. Normalerweise, wenn die App startet, verbraucht sie 8-9 mg im Speicher. Nach dem Hinzufügen des Geofire-Codes sehe ich einen stetigen Anstieg, der weiter zunehmen wird. Ich habe alle Änderungen gespeichert, um alle Geofire-Codes zu entfernen, und es entfernt das Leck, so dass ich weiß, dass es etwas damit zu tun hat. Ich habe das Gefühl, dass beide Probleme SEHR verbunden sind.
Jede Hilfe oder Ideen zu diesem würde sehr geschätzt werden!
UPDATE: Es scheint, dass das, was ich gerade mache, auch Firebase daran hindert, andere Updates vorzunehmen. Wenn dieser Code implementiert wird, kann ich die childRemoved-Benachrichtigung sofort löschen, wenn ich ein untergeordnetes Element direkt in Firebase lösche.