0

Die App, an der ich arbeite, zeichnet viele GMSMarker auf einer Google-Karte. Es funktioniert tadellos in allen anderen Geräten außer iPhone 5. Ich habe GMSMarker subclassed und eine Object-ID auf die Unterklasse gesetzt. Dies geschieht, damit ich die Marker zu einem NSSet hinzufügen und sicherstellen kann, dass es nur unterschiedliche Marker gibt, die geplottet werden und keine Duplikate. Die Unterklasse ist:App stürzt nur auf iPhone 5 ab, wenn GMSMarker zur Karte hinzugefügt wird: EXC_BAD_ACCESS

@implementation BYOMarker 
-(BOOL)isEqual:(id)object 
{ 
    BYOMarker *otherMarker = (BYOMarker *)object; 
    if (self.objectID.intValue == otherMarker.objectID.intValue) { 
     return YES; 
    } 
    return NO; 
} 
-(NSUInteger)hash 
{ 
    return [self.objectID hash]; 
} 
@end 

Die .h-Datei

#import <GoogleMaps/GoogleMaps.h> 

@interface BYOMarker : GMSMarker 
@property (assign, nonatomic) NSNumber *objectID; 
@end 

Die Anwendung ist bei der Rückkehr der Hash-Funktion mit einer EXC_BAD_ACCESS Ausnahme abstürzt. Ich aktivierte Objekte Zombie und versuchten po marker.objectID zu drucken, wenn ich die Karte Objekt für den Marker setzen und ich erhalte die folgenden Fehler:

*** -[CFNumber respondsToSelector:]: message sent to deallocated instance 0x80416470 
0x80416470 

Jede Hilfe ?! TIA

+0

Verwendung stark anstatt –

Antwort

2

Sie haben ein Speicherverwaltungsproblem mit Ihrer objectID-Eigenschaft. Verwenden Sie nicht assign für Objektzeigereigenschaften. Verwenden Sie strong.

@property (strong, nonatomic) NSNumber *objectID; 
+0

für objectID zuweisen Wie habe ich das verpassen! Vielen Dank. Irgendeine Idee, warum dies nicht nur in iPhone 5 gehandhabt wird? Kein anderes Gerät hat mich zu diesem Fehler geführt. –

+1

Es funktionierte auf anderen Geräten wirklich nur Glück. – rmaddy

Verwandte Themen