iOS를 처음 사용했습니다. 사용자가 서로 다른보기 컨트롤러에서 위치를 업데이트 할 수있는 앱이 있습니다. 이 작업을 수행하는 코드의 양을 최소화하기 위해 노력하고 있으므로이를 구현하는 메서드를 복제하는 대신 모든 위치 관련 메서드를 별도의 클래스에 넣습니다.신속한 CLLocationManager를 사용하는 위치 클래스
import UIKit
import CoreLocation
class LocationUtil: NSObject, CLLocationManagerDelegate {
let locationManager = CLLocationManager()
func findUserLocation()->Void{
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
}
저는이 클래스를 이렇게 부릅니다.
override func viewDidLoad() {
super.viewDidLoad()
let locUtil = LocationUtil()
locUtil.findUserLocation()
}
그러나 대리자 메서드가 호출되지 않습니다. 내가보기 컨트롤러에서 똑같은 코드를 직접 사용하면 잘 동작합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
감사합니다. 어떻게 해결할 수 있습니까? – CraigH
해결 방법은 locUtil을 로컬 변수가 아닌 View Controller의 인스턴스 변수 (속성)로 만드는 것입니다. 그러면 뷰 컨트롤러 자체가 살아있는 동안 지속성에 할당 할 내용을 모두 얻을 수 있습니다. – matt
그러나 귀하가 물어 본 것은 아닙니다. 귀하의 질문은 그것을 올바르게하는 방법이 아니 었습니다. 너는 네가 뭘 잘못했는지 물었다. 내 대답은 그것을 설명했다. – matt