폐쇄

2014-10-13 3 views
0

내의 값으로 속성을 설정 내보기 컨트롤러 속성을 만든 :폐쇄

var cityPlaceMark = CLPlacemark() 

그리고 내 locationManger didUpdate 위치 기능의 장소에 할당 할 :

CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler:{(placemarks, error)->Void in 
    if (error != nil) { 
     println("Reverse geocode failed with error") 
     return 
    } 

    if placemarks.count > 0 { 

     //var pm = placemarks[0] as CLPlacemark 

     self.cityPlaceMark = placemarks[0] as CLPlacemark 
    }  
}) 

응용 프로그램이 Thread1 : EXC_BAD_ACCESS와 충돌합니다.

"var pm"으로 표시된 변수가 클로저에 선언 된 변수에 저장하면 잘 동작합니다.

내가 잘못하고있는 것을 누군가에게 설명 할 수 있고, 재산에 올바르게 할당하는 방법을 설명해 줄 수 있습니까? 감사합니다.

+0

'self.cityPlaceMark'는 할당하려고 할 때 할당 해제 될 수 있습니다. 시도한'self.cityPlaceMark '를 시도해 보셨습니까? 할당 전에 println? –

답변

0

버그 일 수 있습니다.

내가 함께 옵션으로 할 경우

var cityPlaceMark: CLPlacemark? 

및 폐쇄에 구현 : 그것은 지금 작동

CLGeocoder().reverseGeocodeLocation(manager.location, completionHandler: {(placemarks, error)->Void in 

     if (error != nil) { 
      println("Reverse geocode failed with error") 
      return 
     } 

     if placemarks.count > 0 { 

      self.cityPlaceMark = placemarks[0] as? CLPlacemark 
     } 
    }) 

을!