A extensão do CLPlacemark resulta em EXC BAD ACCESS

Embora exista uma pergunta semelhante encontradaaqui não fornece uma resposta, pelo menos não para o problema geral.

Meu problema é: DesdeCoreLocation A geocodificação é limitada à taxa e o serviço (web-) para o qual estou desenvolvendo um aplicativo fornece seu próprio serviço de geocodificação de fallback. Quero usar esse serviço de geocodificação personalizado caso atinja o limite de taxa da Apple. Além disso, acho que faz todo sentido evitar um tipo de dados personalizado para os resultados retornados por essa API REST personalizada e, portanto, gostaria de usar os dados retornados para gerarCLPlacemarks. No entanto, a documentação afirma queCLPlacemark propriedades comolocation, locality, administrativeArea etc sãoread-only. Eu, portanto, criei uma subclasse deCLPlacemark sintetizando as propriedades necessárias em variáveis privadas que posso acessar, ou seja:

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

Testando este código com um teste de unidade que analisa dados de um arquivo JSON e chama meuinitWithLocation: locality: administrativeArea: country: O método com os dados resulta em umEXC BAD ACCESS (code=1) no final do teste (no fechamento} do método de teste) com a variável de marcador apontando paranil embora umNSLog(@"placemark: %@", customPlacemark); gera os valores corretos. Além disso, percorrer a linha de teste por linha mostra aCustomPlacemark trabalhando (ou seja, apontando para um objeto preenchido corretamente) até chegar ao final do teste. Para mim, isso indica que algo com a desalocação do meuCustomPlacemark dá errado - mas o que exatamente?

Qualquer ajuda é muito apreciada!

questionAnswers(1)

yourAnswerToTheQuestion