본문 바로가기

분류 전체보기100

[SwiftUI] ScenePhase : Scene의 Lifecycle 관리하기 안녕하세요 Lody 입니다. 🙂 오늘은 SwiftUI.ScenePhase에 대해 알아보려고 합니다. ScenePhase현재 Scene의 Lifecycle 상태를 관리하는 값입니다.Environment에서 scenePhase를 observing해서 현재 상태 값을 읽을 수 있고, onChange(of: perform:) 메서드를 사용해서 값이 변경할 때마다 이벤트를 받도록 구현할 수 있습니다. ScenePhase는 열거형으로 총3가지(active, inactive, background)입니다. 2024. 8. 31.
[UIKit] UIScreen 사용을 지양해야하는 이유 (feat. Scene 관점에서) 보호되어 있는 글 입니다. 2024. 8. 25.
[Swift] actor도 final 키워드로 최적화 할 수 있을까? 흔히들 class에서 상속 구조가 없으면 swift optimizationTips에서 가이드하는 것처럼 아래와 같이 final 키워드를 명시하여 컴파일러가 최적화를 수행할 수 있도록 해준다. class 뿐만 아니라 메서드, 프로퍼티는 final 키워드를 통해 컴파일러가 최적화가 가능하다.final 키워드는 더 이상 얘는 overriden 되지않아.! 걍 바로 얘 쓰면 돼! 라고 알려주는 것과 같기 때문이다. 그렇다면 swift 5.5에 새롭게 등장한 actor는 어떨까? 그보다 먼저 actor가 뭔지부터 간략하게 끄적여보면actor는 class와 같은 reference type이다. class와 다른 점은 상속이 불가능하고, MT-safe를 기본적으로 보장한다.다른 타입처럼 initializer도 가질 .. 2024. 8. 24.
[SwiftUI] .task(priority:_:) 플랫폼 버전 대응하기 보호되어 있는 글 입니다. 2024. 8. 23.
[PhotoKit] 5. LivePhotos Live PhotoLive Photo는 움직임과 소리를 포함하고, 사진이 촬영된 직전과 직후의 순간을 포착한 사진입니다. Live Photo를 보여주기 위해 PHLivePhotoView클래스를 사용합니다. 이 클래스는 Photos 앱에서 사용되는 것과 같은 인터랙티브 재생 기능을 제공합니다. PHLivePhoto 객체를 얻은 후에는 Live Photo view를 사용하여 사진을 보여주고, 그 움직임과 소리를 제어할 수 있습니다. 플랫폼별 사용법iOS와 tvOS: PHLivePhoto 클래스를 사용하여 Live Photo 객체를 가져와 PHLivePhotoView로 표시할 수 있습니다.macOS: PHLivePhoto 클래스는 Photos 앱의 사진 편집 확장 기능에서 Live Photos를 편집할 때 사.. 2024. 8. 22.
[Combine] Future : Convenience Publishers Combine의 Future Publisher에 대해 정리.Future와 Promise란 무엇인가? Future는 아직 존재하지 않을 수 있는 값을 위한 컨텍스트. 일반적으로, 우리는 비동기 작업의 최종적인 완료 또는 실패를 나타내기 위해 Future를 사용함. Swift는 Combine 프레임워크의 일부로서 Future의 기본 구현을 제공함. Future는 자신이 감싸고 있는 값의 타입과 발생할 수 있는 오류의 타입을 나타내는 두 가지 타입을 가짐.위 코드 조각에서는 각각 Int(값의 타입)와 Never(오류의 타입)가 해당됨.  Combine의 영역에서 Future는 하나의 Publisher임.Future는 Publisher 프로토콜을 채택함. Publisher 프로토콜의 모든 요구사항을 따르며, P.. 2024. 8. 19.
[SwiftUI] 링크도 게으름이 필요해: NavigationLink를 Lazy하게 안녕하세요. 로디입니다. SwiftUI로 앱을 개발하다 보면 자연스럽게 만나게 되는 친구가 있죠. 바로 NavigationLink입니다.오늘은 NavigationLink에서 메모리 사용을 최적화하는 기법에 대해 알아보려고 합니다. 뷰 간의 네비게이션을 손쉽게 처리해주는 NavigationLink 요녀석, 처음엔 아주 사랑스러운데, 쓰다 보면 뭔가 불편함을 느낄 때가 있습니다.  기본적으로 NavigationLink는 화면에 나타나는 순간, 링크의 목적지(destination)를 미리 생성해버립니다. 작은 화면이나 간단한 뷰라면 상관없지만, 복잡한 화면이거나 무거운 데이터를 다루는 경우라면 이야기가 달라집니다. 무거운 뷰를 미리 생성해둔다..? 메모리 폭행범인가요?..🥲 아직 쓰지도 않는 뷰의 메모리를 .. 2024. 8. 18.
[WWDC21] Meet async/await in Swift WWDC21 : Meet async/await in Swift 세션을 그대로 번역한 내용입니다. Swift는 이제 비동기 함수를 지원합니다. 이 패턴은 흔히 async/await로 알려져 있습니다. 새로운 문법이 어떻게 코드를 더 읽기 쉽고 이해하기 쉽게 만들어주는지 알아보세요. 함수가 일시 중단(suspend)될 때 무엇이 일어나는지, 그리고 기존의 완료 핸들러(completion handler)를 비동기 함수로 어떻게 변환할 수 있는지도 배워보세요. 안녕하세요, 저는 Apple의 Swift 팀 엔지니어 Nate입니다. 오늘 제 동료 Robert와 함께 Swift의 async/await에 대해 설명드리겠습니다.비동기 프로그래밍은 여러분 중 많은 분들이 정기적으로 수행하는 작업일 것입니다. 비동기 코드는.. 2024. 8. 17.
[WWDC21] What’s new in SwiftUI 1. pull to refresh2. searchable [SearchBar]3. list row separator4. async image5. material effect6. badge for TabView item7. onSumit Trigger8. safeArea inset9. iteractiveDismissDisabled10. swipe actions11. AppStorage raw representable12. keyboard done button13. Canvas Core Graphics14. keyboard accessory view15. FocusState 2024. 8. 11.
[WWDC20] What’s new in SwiftUI 1. Grid View/ Collection View2. ScrollView API Update Scroll To Bottom3. PageView Controller4. Full Screen modal5. MultiLine TextField [Text Editor]6. Progress View and Activity Indicator7. Link8. LazyVStack and LazyHStack 9. Disclosure Group or Drop Down10. Advanced Map View and Map View annotations11. TextField onChange [SearchBar] 2024. 8. 11.
[Swift] Call to main actor-isolated instance method in a synchronous nonisolated context Swift 6에서는 Swift Concurrency 모델을 강화하여, MainActor에 의해 격리된 인스턴스 메서드를 비격리 Context에서 호출할 수 없음.Swift의 Concurrency 모델에서 "격리"는 영어로 "isolation"이라고 합니다. Swift에서는 데이터 race를 방지하고 안전한 동시성 프로그래밍을 가능하게 하기 위해 "actor-isolated"라는 개념을 도입했습니다. "actor-isolated"는 특정 액터(Actor) 또는 메인 액터(MainActor)에 의해 격리된다는 의미입니다. 이 격리는 액터가 자신이 소유한 상태(state)에 대한 접근을 제어하도록 합니다. 이 문제를 해결하려면 아래와 같이 @MainActor 속성을 사용하여 함수나 메서드를 MainActor에.. 2024. 8. 4.
[Swift] 데이터모델링 Struct와 Class중 어떤 걸 써야할까요 +_+ ? 안녕하세요 로디입니다 🙂 오늘 커뮤니티에서 어떤 분이 Struct와 Class중에 데이터 모델을 어떤 타입으로 정의해야하는지,어떤 케이스에 따라 타입을 구분해서 사용하는지 물으시더라구요.Struct는 값 타입이구, Class는 참조 타입이기 때문에 참조 값을 공유할 필요가 없으면 Struct를 쓰는걸 권장함.! 이라고 말씀드리니그러면 Class로 모델을 정의하는 경우가 보통 언제 있는지 설명해달라고 하시는데,,, 어라라 +_+ 설명하려니깐 명확하게 구분지어 말씀을 못드리겠더라구요. 저도 헤매던 찰나에 다른 분이 공식문서 링크를 따악 공유해주셔서 저도 오늘 문서에서 적힌 내용을 정리해보려고 합니다.그러면 비교 하러가볼까요 ~~? (공식문서는 여기에서 확인할 수 있습니다!) 🤔  Struct와 Class.. 2024. 8. 4.