공식문서 5

Handling Location Events in the Background

Handling Location Events in the Background 백그라운드 실행 모드를 활용하여 위치 관련 이벤트에 응답 Overview 앱은 보통 foreground상태에서 위치 서비스를 사용한다, 하지만 몇몇 위치 서비스는 백그라운드에서 실행되거나 시스템이 앱을 실행하게 할 수도 있다. 백그라운드에서 이벤트를 받으려면 아래와 같이 Xcode에서 "Location updates"기능을 설정해라. 또한 CLLocationManger개체의 allowsBackgroundLocationUpdates속성을 true로 설정해야 한다. 앱의 백그라운드 상태에서 위치가 갱신될 때, 시스템은 앱을 실행하고 options dictionary를 application(_: willFinishLaunchingWi..

공식문서 2022.02.11

Making Changes to Reduce Memory Use

Making Changes to Reduce Memory Use 과도한 사용의 일반적인 원인을 해결하여 앱의 메모리 사용량 줄이기 Overview 앱의 메모리 사용량을 특정 기능이나 작업으로 localize화 할 때 메모리 사용량을 줄이기위한 변화를 할 수 있다. 과도한 메모리 사용의 일반적인 원인과 영향을 줄이기 위한 조치는 아래에 설명되어 있다. Optimize Image Assets 큰 이미지, 특히 높은 컬러 depth를 가지고있는 사진은 많은 메모리를 사용한다. 앱이 보여주는 사이즈에 맞게 asset을 최적화 해라. 다른소스 (예를들어 네트워크로부터 요청한 이미지 또는 사용자의 포토 앨범에서 가져온 사진들)에서 로드된 이미지를 적절한 크기와 color depth로 변환해라. 메모리 영향을 최소화..

공식문서 2022.01.17

Reducing Your App's Memory Use

Reducing Your App's Memory Use 메모리 사용 metric을 분석하고 메모리 효율성을 최대화 하도록 변경하여 앱의 성능을 개선하십시오 Overview 디바이스의 메모리(RAM)는 app, OS process, kernel에서 공유하는 제한적인 리소스이다. iOS는 다양한 메모리 요구사항을 충족하는 기술이 있지만 이러한 기술들은 많은 속도와 응답성을 소비한다. 예를들어 iOS는 앱이 백그라운드에서 실행중일 때 memory-intensive app을 solid-state storage로 전송할 수 있다. 이때 앱이 포그라운드로 돌아오거나 백그라운드 작업을 실행하려고 할 때 지연이 발생한다. 만약 앱이 너무많은 메모리를 사용하고 있다면, iOS에서 warning을 보내준다. 너는 cras..

공식문서 2022.01.03

View Programming Guide for iOS

아래의 글은 View Programming Guide for iOS의 일부를 번역한 글입니다. View And Window Architecture view와 window는 앱의 유저 인터페이스를 보여주고 인터페이스의 상호작용을 다룬다. UIKit과 다른 여러 프레임워크들은 여러 뷰들을 제공하고 있다. 또한 앱을 표준화된 View와 달리 커스텀하여 지정할 수 있다. 나만의 커스텀뷰를 사용할때 UIView와 UIWindow의 개념과 구조에대해 이해해야 한다. 이러한 기능이 작동하는 것을 이해하는 것은 어플리케이션에 변화가 일어났을 때 View가 적절하게 동작하게 하는데 중요하다. View Architecture Fundamentals 시각적인 대부분의 작업은 UIView의 인스턴스인 view 객체로 수행된다..

공식문서 2021.12.15

Increasing Performance by Reducing Dynamic Dispatch

Increasing Performance by Reducing Dynamic Dispatch 다른 많은 언어와 마찬가지로 Swift는 클래스가 수퍼클래스에 선언된 메서드와 속성을 재정의할 수 있도록 합니다. 이는 프로그램이 런타임에 참조되는 메서드 또는 속성을 결정한 다음 간접 호출 또는 간접 액세스를 수행해야 함을 의미합니다. Dynamic Dispatch라고 하는 이 기술은 각 간접 사용에 대해 일정한 양의 런타임 오버헤드를 희생시키면서 언어 표현력을 높입니다. 성능에 민감한 코드에서 이러한 오버헤드는 종종 바람직하지 않습니다. 간접호출은 비용이 많이들고 직접 호출보다 퍼포먼스의 속도가 느리다. 아래의 방법을 통해서 dynamic dispatch의 런타임 오버헤드를 줄이자! 1. 더이상 상속이 필요없..

공식문서 2021.12.09