본문 바로가기
728x90

전체보기139

[WWDC20] The Push Notifications primer (APNs / iOS 푸시 등록) 푸시 알림이 무엇인지, 왜 사용하는지 설명해주고 앱에 추가할 수 있는 방법을 설명해주는 영상에 대해 정리한 글입니다! Introducing Push Notification 푸시 알림의 기능 Engagement : 푸시 알림을 통해서 앱이 상호작용 할 수 있다. Provide updates : 앱에 실시간으로 업데이트를 제공할 수 있는 기능을 제공한다. Dynamic experiences : 앱 내의 변경사항이 있을 때 다이나믹한 경험을 줄 수 있다. 푸시 알림을 추가했을 때 이점은 무엇이 있을지? Foreground not required : 앱이 항상 포그라운드에 있을 필요가 없다. 푸시 알림은 앱의 상태와 관계없이 전달되고 필요한 경우 실행된다. Power efficient : 푸시 알림은 전력을 많.. 2023. 2. 14.
[WWDC18] iOS Memory Deep Dive iOS Memory Deep Dive - WWDC18 - Videos - Apple Developer Discover how memory graphs can be used to get a close up look at what is contributing to an app's memory footprint. Understand the true... developer.apple.com [WWDC18] iOS Memory Deep Dive Why reduce memory :: 왜 메모리를 줄여야 하는지? Memory footprint :: 메모리 사용량에 대한 이론적인 이야기 Tools for profiling footprint :: 메모리 사용량을 확인할 수 있는 툴 소개 Images :: 메모리를 많이 .. 2022. 11. 27.
[WWDC19] Advances in Collection View Layout - Part 1 Advances in Collection View Layout - WWDC19 - Videos - Apple Developer Collection View Layouts make it easy to build rich interactive collections. Learn how to make dynamic and responsive layouts that range... developer.apple.com 👋 WWDC19 - Advances in Collection View Layout Current State-of-the-Art UICollectionView 는 iOS 6 에서 처음 소개되었다. 데이터를 렌더링하는 클래스와 CollectionView 의 layout 을 관리하는 두개의 클래스가 필요했.. 2022. 10. 17.
[WWDC19] Data Flow Through SwiftUI - Part 2 Working With External Data 💬 Part1 에서는 ... 유저와 SwiftUI 뷰 간 데이터 흐름에 대해 얘기해봤었다. @State 프로퍼티 래퍼를 통해 값이 변경됨을 트래킹하는 변수를 둘 수 있고, @Binding 을 통해 자식뷰에서도 같은 데이터를 바라보도록 할 수 있었다. 🙋‍♀️ Part2 에서는? 뷰 내부에서의 동작을 관리하는 @State 변수로는 불가능한 외부에서 발생하는 이벤트, 외부에서 관리되는 데이터는 어떻게 처리해야할지 다뤄본다. 결론적으로 유저 인터렉션이 아닌 timer, notification 처럼 외부에서 발생하는 이벤트도 동일한 흐름으로 동작한다. action 생성 -> State 값 변경 -> 뷰에 대한 새로운 카피 -> 유저에게 새롭게 보여줌 SwiftUI.. 2022. 8. 30.
[WWDC19] Data Flow Through SwiftUI - Part 1 Principles of Data Flow Tools for Data Flow SwiftUI 에서 소개되는 Property, BindableObject,@Environment , @Binding ,@State 미리 스포하자면 BindableObject -> ObservableObject 로 이름이 변경됨 이번 영상을 통해서 해당 툴들이 어떻게, 언제 쓰이는지 알게 될 것이다! Principle SwiftUI 데이터 플로우를 디자인하기 위한 두개의 원리를 알아보자. First principle "Data Access as a Dependency" 토글을 생각해보자. 토글 뷰를 그리기 위해서는 Bool 타입의 데이터가 필요하고, 데이터가 새로운 값으로 변경될 때마다 뷰를 변경해줘야 한다. 데이터가 변경될 때.. 2022. 8. 30.
[WWDC19] LLDB: Beyond "po" LLDB 는 앱 런타임 중에 디버깅 할 수 있는 툴이다. "po" 기본적으로 LLDB 에서 po ~~ 명령어를 작성하면 해당 타입과 프로퍼티에 대해 보여준다. CustomDebugStringConvertible 프로토콜을 채택하고, debugDescription 을 추가하면 Object 이름이 나타나는 곳에 커스텀하게 설명을 추가할 수 있다. Sub structure 에 대한 커스텀이 필요하다면 CustomReflectable 을 찾아보자. po 명령어는 객체를 프린팅하는 것 외에도, 메소드 호출 등의 동작을 할 수 있다. po 는 사실 특정 명령어를 alias 로 단축시킨 것이다. 다른 이름으로 동일하게 만들 수도 있다. expression --object-description 을 줄인것 "po" Un.. 2022. 7. 4.
[iOS] SwiftUI LazyVStack LazyHStack :: lazy load views 안녕하세요! 오늘은 SwiftUI 의 Lazy 키워드를 정리하려고 합니다. 지난번에 VStack, HStack, ZStack 에 대해서 정리를 했었는데, ZStack 을 제외하고는 앞에 Lazy 라는 키워드가 붙은 LazyVStack, LazyHStack 이 있습니다 👀 Lazy 라는 키워드가 붙는 건 어떤 차이가 있는지 궁금해서 찾아봤어요. 👀 LazyVStack LazyHStack :: lazy load views LazyVStack 은 VStack 과 동일하게 vertical (세로) 방향으로 항목들을 보여주는 뷰이지만, 각 항목이 필요할때만 생성합니다. LazyHStack 은 Horizontal (가로) 방향으로, LazyVStack 과 방향만 다르고 동일합니다! Stack 이 lazy 하다는 것.. 2022. 6. 7.
[iOS] SwiftUI property wrapper @State @Binding @State SwiftUI 는 state 로 선언한 프로퍼티의 저장소를 관리한다. 해당 프로퍼티의 값이 변경될 때, SwiftUI 는 값에 의존하고 있는 뷰 계층구조의 부분을 업데이트한다. State 프로퍼티는 하나의 뷰 안에서 사용되는 값으로, 일반적으로 private 키워드를 붙여서 사용한다. State instance 는 값(value)을 읽고 쓸 수 있는 형태이기 때문에, value 와 동일하지는 않다. state 가 갖고있는 value 에 액세스하기 위해서는, property name 을 통해 접근하면 된다. 해당 값은 wrappedValue 속성을 반환한다. wrappedValue 는 state 변수가 저장하고 있는 값을 접근하는 프로퍼티이지만, wrappedValue 를 직접 접근해서는 안된.. 2022. 6. 2.
[iOS/SwiftUI] Text, Image 기본 정리 + 시스템 이미지 ✍️ Text Text 는 한줄 이상의 읽기 전용 글자를 표현하기 위한 View 입니다. Text initializer Text 생성자는 여러가지가 있는데, 이미지로도 생성할 수 있는게 UIKit 과는 다른거 같아요. NSAttributedString 을 사용하면 가능하긴 했지만, 기본적으로 이미지를 텍스트와 연결할 수 있게 제공해주네요. init(String) → 단순 문자열, Localized 관련 생성자도 따로 있어요. init(AttributedString) → NSAttributedString 이랑 다릅니다. (+iOS15) init(Image) → 다른 Text 들이랑 연결하기위한 Image init(_ date: Date, style: Text.DataStyle) Text.DataStyle .. 2022. 5. 5.
728x90