728x90

분류 전체보기 289

앱 추적을 허용한 사용자 수 증가

iOS 14.5부터 사용자를 추적하거나 사용자 기기의 광고 식별자에 접근하려면 App Tacking Transparency(줄여서 ATT)를 통해 사용자의 허가를 받아야 합니다. 당연히(?) 이게 처음 소개되었을 때는 약 2~4%의 사용자만이 추적을 허용했고, 대부분의 사용자는 동의하지 않았어요. 그런데 최근 Adjust라는 곳에서 통계를 내봤더니, 동의한 사용자가 많이 늘었다고 해요. 2021년 3월에는 약 16%의 동의율을 보였다면, 올해는 25%까지 증가했다고 합니다. 특히, 게임분야의 경우 30%까지도 증가한 곳이 있다고 해요. (75%의 opt-in 비율을 가지고 있는 앱도 있다고 하지만... 그게 가능한가.....?) 이 통계는 나름 의미 있는 결과값이라고 생각이 되는게, 초반에는 사용자들의 ..

News 2022.04.27

Dismiss Presented View

안녕하세요. Cancel을 누르면 modal sheet가 닫히는 이런 화면 많이 보셨죠?? 기존에는 presentationMode를 사용해서 presented 되어 있는 뷰를 닫았는데, iOS 15부터는 dismiss라는 것을 사용하도록 바뀌었어요. 그래서 이번에는 iOS 14 이하와 iOS 15 이상에서 화면에 띄워져 있는 뷰를 dismiss 시키는 방법에 대해 알아볼게요. ## 1. PresentationMode (iOS 14 이하) 뷰를 화면에 출력할 때는 보통 아래처럼 sheet 수식어나 fullScreenCover 수식어를 사용합니다. struct ContentView: View { @State private var isShowingCart = false var body: some View {..

SwiftUI 2022.04.25

클로저에서 [weak self] 사용할 때 주의할 점2

안녕하세요. 저번 글에서 [weak self]를 쓸 때 주의할 점에 대해서 알아봤는데요. 클로저에서 [weak self] 사용할 때 주의할 점 클로저에서 [weak self] 사용할 때 주의할 점 안녕하세요. 클로저 안에서 [weak self]를 쓰는 Swift 코드를 적지 않게 볼 수 있어요. 그 이유는 메모리 누수(memory leak)를 막기 위해서인데요, 만약, 클로저 안에서 [weak self]와 함께 guard-let 구문을 사 phillip5094.tistory.com 비슷한 내용이지만 좀 다른 내용과 예시가 설명되어 있는 글이 있어서, 그 글을 읽고 내용을 정리해보려고 합니다. ## 0. Retain Cycle이 발생하는 예시 우선 retain cycle이 발생하는 예시를 들어볼게요. 그러..

Swift 2022.04.24

Custom Adaptive StackView (feat. ViewBuilder)

안녕하세요. 이번에는 SwiftUI에서 레이아웃에 따라 뷰가 재배치되도록 사용성을 고려한 간단한 적응형 Stack 뷰를 만들어보는 시간을 가져볼게요. 이번 글에서는 horizontalSizeClass와 dynamicTypeSize를 사용하니, 잘 모르시면 아래 글을 먼저 읽어보시는 것을 추천드려요. - horizontalSizeClass, dynamicTypeSize horizontalSizeClass, dynamicTypeSize 안녕하세요. 이번에는 SwiftUI EnvironmentValues 중 horizontalSizeClass 프로퍼티와 dynamicTypeSize 프로퍼티에 대해 알아볼게요. # 1. horizontalSizeClass 끝에 Class라는 이름이 붙긴 했지만, 이 친구는 프...

SwiftUI 2022.04.17

horizontalSizeClass, dynamicTypeSize

안녕하세요. 이번에는 SwiftUI EnvironmentValues 중 horizontalSizeClass 프로퍼티와 dynamicTypeSize 프로퍼티에 대해 알아볼게요. # 1. horizontalSizeClass 끝에 Class라는 이름이 붙긴 했지만, 이 친구는 프로퍼티입니다. Environment property wrapper로 아래처럼 선언해서 사용할 수 있구요 horizontalSizeClass에는 enum 타입인 UserInterfaceSizeClass 값이 설정되며 아래의 값 중 하나를 가집니다. 쉽게 생각해서 compact = 작은 화면, regular = 큰 화면이라고 보면 될 것 같아요ㅎㅎ "그래서 이 값은 어떻게 결정되는데???" "SwiftUI가 알아서!!!" SwiftUI가 ..

SwiftUI 2022.04.17

클로저에서 [weak self] 사용할 때 주의할 점

안녕하세요. 클로저 안에서 [weak self]를 쓰는 Swift 코드를 적지 않게 볼 수 있어요. 그 이유는 메모리 누수(memory leak)를 막기 위해서인데요, 만약, 클로저 안에서 [weak self]와 함께 guard-let 구문을 사용해서 접근할 인스턴스를 non-optional로 바꿨을 때, 이건 strong reference일까요 weak reference일까요?? 그리고 클로저를 중첩(nested)시킨다면??? 이번 글에서는 요런 궁금한 점들을 알아보는 시간을 가져볼게요. 이후 아래 글도 같이 봐주세요~^^ - 클로저에서 [weak self] 사용할 때 주의할 점2 클로저에서 [weak self] 사용할 때 주의할 점2 안녕하세요. 저번 글에서 [weak self]를 쓸 때 주의할 점에..

Swift 2022.04.16

[오픈소스] Inject

안녕하세요. 이번에는 UIKit, AppKit, SwiftUI 상관없이 Hot reloading을 지원하는 Inject라는 오픈소스에 대해 알아볼게요. 전체 프로젝트는 여기에 올려두었어요. # 1. Hot reloading? 우선 Hot reloading이란 무엇인지 알아야겠죠?? Hot reloading이란 소스코드가 변경되었을 때 앱 종료/재실행하는 것처럼 다시 컴파일하는 것이 아닌 실시간으로 실행 중인 앱에 수정내역이 반영되게 하는 기술을 말해요. (SwiftUI의 프리뷰 같은거라고 보면 될 것 같아요.) 앱을 다시 빌드하는데 시간도 줄이고, 앱 재실행하고 내가 원하는 화면으로 이동하는 시간까지 줄일 수 있으니 개발 시간이 매우 단축되겠죠??ㅎㅎㅎ # 2. Inject 즉, Inject를 사용한다는..

iOS 2022.04.12

WWDC22 개최 예정

안녕하세요. 2022/06/06 ~ 2022/06/10 동안 WWDC22 세션이 진행된다고 합니다. 이번 WWDC는 이전과는 다르게 6월 6일에 개발자와 학생들이 Apple Park에서 keynote를 같이 보는 일정도 있다고 해요. (물론 온라인 세션도 진행하구요ㅎㅎ) In addition to the online conference, Apple will host a special day for developers and students at Apple Park on June 6 to watch the keynote and State of the Union videos together, along with the online community. Space is limited and details on ..

News 2022.04.11

Automatic Reference Counting (ARC)

안녕하세요. 이번에는 Swift 공식 문서에 있는 Automatic Reference Counting (줄여서 ARC) 문서를 읽고 정리해보려고 해요. # 1. Overview Swift는 앱의 메모리 사용을 관리하기 위해서 Automatic Reference Counting(ARC)를 사용합니다. ARC는 필요 없는 클래스 인스턴스에 대해서 메모리를 해제해줍니다. 그래서 사용자는 메모리 관리에 대해서 걱정하지 않아도 돼요ㅎㅎ 그런데 몇몇 경우에 ARC가 메모리 관리를 하기 위해 코드와 코드 간의 더 많은 정보를 요구하는 경우가 있어요. 이런 상황과 더불어 앱의 모든 메모리를 ARC가 관리할 수 있도록 하는 방법에 대해 알아보려고 해요. (Reference Counting은 클래스 인스턴스에만 적용됩니다..

Swift 2022.04.10

Notification에 Action 버튼 추가하기

안녕하세요. 이번에는 Notification에 버튼 추가하는 방법(즉, Actionable Notification)에 대해 알아볼게요. # Overview Actionable Notification이란 아래 이미지처럼, Notification에 버튼을 추가한 것을 말합니다. 일반적인 Notification을 클릭하면 앱이 자동으로 실행되죠? 그런데 Actionable Notification을 클릭하면 앱이 background에서 실행되고 background에서 푸시 클릭 이벤트가 동작하게 됩니다! 이렇게 Actionable Notification을 사용하려면, 아래 사항을 준수해야 해요. 앱 launch time 때 하나 이상의 notification type을 선언 notification type에는 ..

iOS 2022.04.05