본문 바로가기

iOS192

[iOS] CFGetRetainCount Apple Developer Documentation developer.apple.com CFGetRetainCount Core Foundation Object의 reference count를 반환한다. memory leak이 있는 부분을 디버깅할 때 사용하면 유용하다. 예제 class Test { deinit { print("deinit \(CFGetRetainCount(self))") } var closure: (() -> Void)? = { } func doing() { defer { print("doing defer \(CFGetRetainCount(self))") } print("doing start \(CFGetRetainCount(self))") closure = { self } } } va.. 2022. 6. 2.
[iOS Issue] CLLocationManager 사용 시 주의할 점 CLLocationManager 객체를 생성 후 사용 시, manager 인스턴스의 참조를 어딘가에 보관해놓아야 한다. 아니면 local변수로 함수에서 선언하기만 하면 함수 종료 시 인스턴스가 메모리에서 해제되어 버려서 관련 기능들을 사용할 수가 없다(location update, 권한 얻기 등등) 정상 동작 코드 import UIKit import CoreLocation class ViewController: UIViewController { let manager = CLLocationManager() // 프로퍼티로 저장 override func viewDidLoad() { super.viewDidLoad() manager.delegate = self manager.desiredAccuracy = k.. 2022. 5. 30.
[iOS] Background Modes의 Location Updates Apple Developer Documentation developer.apple.com Handling Location Events in the Background 대부분의 앱은 foreground에서 위치 서비스를 사용하지만 종종 Background 상태에서도 위치 정보를 업데이트 받아야할 필요가 있다. Application Capabilities의 Background Mode에서 Location Updates를 사용하면 백그라운드 상태에서도 위치 정보를 업데이트 받을 수 있다. 이 때 CLLocationManager의 allowsBackgroundLocationUpdates를 true로 해놓아야 한다. stopUpdatingLocation() 메서드를 호출하기 전까지 앱은 Background sta.. 2022. 5. 30.
[iOS] Xcode에서 Application state 확인하기 Xcode에서 Application state 확인하기 앱 실행 Xcode Inspector에서 Debug navigator 탭 클릭 energy Impact 클릭 Application State에서 실시간으로 앱의 상태 변화 확인 가능 Foreground Background Suspended 2022. 5. 30.