Ampliar los resultados de CLPlacemark en EXC BAD ACCESS

Aunque hay una pregunta similar encontradaaquí no proporciona una respuesta, al menos no para el problema general.

Mi problema es: desdeCoreLocation la geocodificación tiene una tasa limitada y el servicio (web) para el que estoy desarrollando una aplicación proporciona su propio servicio de geocodificación alternativa, quiero usar este servicio de geocodificación personalizado en caso de que alcance el límite de tasa de Apple. Además, creo que tiene mucho sentido evitar un tipo de datos personalizado para los resultados devueltos por esta API REST personalizada y, por lo tanto, me gustaría utilizar los datos devueltos para generarCLPlacemarks. Sin embargo, la documentación establece queCLPlacemark propiedades tales comolocation, locality, administrativeArea etc. sonread-only. Por lo tanto, creé una subclase deCLPlacemark sintetizando las propiedades necesarias en variables privadas a las que puedo acceder, es decir:

// 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

Probar este código con una prueba unitaria que analiza los datos de un archivo JSON y llama a miinitWithLocation: locality: administrativeArea: country: método con los resultados de datos en unEXC BAD ACCESS (code=1) al final de la prueba (al cierre} del método de prueba) con la variable de marca de posición apuntando anil aunque un previoNSLog(@"placemark: %@", customPlacemark); da salida a los valores correctos. Además, recorrer la prueba línea por línea muestra elCustomPlacemark trabajando (es decir, apuntando a un objeto debidamente poblado) hasta llegar al final de la prueba. Para mí esto indica que algo con la desasignación de miCustomPlacemark sale mal, pero ¿qué es exactamente?

¡Cualquier ayuda es muy apreciada!

Respuestas a la pregunta(1)

Su respuesta a la pregunta