2017-01-24 7 views
1

Я читал this question и все еще не могу понять что-то. Я установил точки останова на AA & BB и увидел, что первый AA происходит, что означает, что destinationPlacemark получает экземпляр. позже на линии ВВ I po destinationPlacemark и получаю ошибку:Почему я получаю EXC_BAD_ACCESS сразу после создания экземпляра?

expression produced error: error: Execution was interrupted, reason: EXC_BAD_ACCESS (code=1, address=0x10). The process has been returned to the state before expression evaluation.

Я читал некоторые из ответов нашли here, но они говорят о выпущенном объекта. Как можно освободить этот объект так быстро?

import UIKit 
import CoreLocation 

class ViewController: UIViewController { 


var destinationPlacemark = CLPlacemark() //AA 

override func viewDidLoad() { 
    super.viewDidLoad() //BB 
    forwardGeocoding(address: "1 Infinite Loop, Cupertino, CA 95014") 
} 
func forwardGeocoding(address: String) { 
CLGeocoder().geocodeAddressString(address, completionHandler: { (placemarks, error) in 
    if error != nil { 
     print(error ?? "Error in plscement conversion") 
     return 
    } 
    if (placemarks?.count)! > 0 { 
     let placemark = placemarks?[0] 
     let location = self.destinationPlacemark.location 
     let coordinate = location?.coordinate 
     print("Latitude: \(coordinate!.latitude), Longitude: \(coordinate!.longitude)") 

     self.destinationPlacemark = placemark! 
    } 
}) 
} 

} 
+1

I _suspect_, что причина в том, что вы не должны создавать экземпляр 'CLPlacemark' именно так, через конструктор. Вы можете получить его только от геокодера (как в примере). 'CLPlacemark 'соединяется с Obj-C, где он наследует от' NSObject', который предоставляет вам инициализатор нулевого аргумента, да, однако, тот немедленно возвращает нулевой объект. – courteouselk

ответ

-1

, как описано в the answer indestinationPlacemark = CLPlacemark() был экземпляр, но не имеет местоположения, указанного. Тогда местоположение устанавливается на этот нуль. Я отправил оригинальный вопрос. Попробуйте chaning let location = self.destinationPlacemark.location до location = placemark.location

+0

См. Комментарий к вопросу – Honey