Extending CLPlacemark führt zu EXC BAD ACCESS

Obwohl gibt es eine ähnliche Frage gefundenHie es gibt keine Antwort, zumindest nicht für das allgemeine Problem.

Mein Problem ist: SeitCoreLocation geocoding ist ratenbegrenzt und der (Web-) Dienst, für den ich eine App entwickle, bietet einen eigenen Fallback-Geocodierungsdienst. Ich möchte diesen benutzerdefinierten Geocodierungsdienst verwenden, falls ich das Ratenlimit von Apple erreiche. Des Weiteren halte ich es für absolut sinnvoll, einen benutzerdefinierten Datentyp für die von dieser benutzerdefinierten REST-API zurückgegebenen Ergebnisse zu vermeiden und möchte daher die zurückgegebenen Daten verwenden, um @ zu generiereCLPlacemarks. Die Dokumentation besagt jedoch, dassCLPlacemark Eigenschaften wielocation, locality, administrativeArea etc. sindread-only. Ich habe daher eine Unterklasse von @ erstellCLPlacemark Synthetisieren der benötigten Eigenschaften auf private Variablen, auf die ich zugreifen kann, d.

// interface: (.h)
@interface CustomPlacemark : CLPlacemark
- (nonnull id)initWithLocation: (nonnull CLLocation *)location
                      locality: (nullable NSString *)locality                       
            administrativeArea: (nullable NSString *)adminArea
                       country: (nullable NSString *)country;
@end

// implementation (.m)
@implementation CustomPlacemark
@synthesize location = _location;
@synthesize locality = _locality;
@synthesize country = _country;
@synthesize administrativeArea = _administrativeArea;

- (nonnull id)initWithLocation: (nonnull CLLocation *)location
                          locality: (nullable NSString *)locality
                administrativeArea: (nullable NSString *)adminArea
                           country: (nullable NSString *)country{
    self = [super init];
    if(self){
        _location = location;
        _locality = locality;
        _administrativeArea = adminArea;
        _country = country;
    }
    return self;
}
@end

Testet diesen Code mit einem Komponententest, der Daten aus einer JSON-Datei analysiert und my @ aufrufinitWithLocation: locality: administrativeArea: country: -Methode mit den Daten ergibt einEXC BAD ACCESS (code=1) am Ende des Tests (am Schluss} der Testmethode) mit der Ortsmarkenvariablen aufnil obwohl a priorNSLog(@"placemark: %@", customPlacemark); gibt die korrekten Werte aus. Darüber hinaus zeigt das zeilenweise Durchlaufen des Tests dasCustomPlacemark arbeiten (d. h. auf ein ordnungsgemäß gefülltes Objekt zeigen), bis das Ende des Tests erreicht ist. Für mich bedeutet dies, dass etwas mit der Freigabe meinesCustomPlacemark geht schief - aber was genau?

Jede Hilfe wird sehr geschätzt!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage