[Swift] Swift Concurrency와 GCD
·
iOS&Swift
안녕하세요. 저번 글에서 Race Condition과 Thread Safe에 대해 알아봤었는데 비동기에 대해서 공부하다 보니 자연스럽게 WWDC 2021에서 소개된 Swift Concurrency에 대해서도 관심이 생겼습니다. 그래서 이번 기회에 GCD Swift Concurrency에 대해 간단하게 알아보고 사용법을 정리해 볼까합니다. GCD, Swift Concurrency 란??? GCD 기존 Swift에서 동시성 프로그래밍을 구현하기 위해 단연코 GCD API를 주로 사용했습니다. GCD는 비동기로 실행되고자 하는 코드 블록을 DispatchQueue라는 선입선출 Queue에 넣어 스레드에 작업을 할당하는 방식입니다. GCD는 클로저를 사용해 DispatchWorkItem라는 실행해야 할 작업 객..
[Swift] Race Condition과 Thread Safe
·
iOS&Swift
비동기적으로 기능을 구현하다 보면, 순차적으로 코드가 실행되는 것이 아니다 보니 주의해야 할 점이 생긴다. 그중 Race Condition과 해결책인 Thread Safe에 대해 알아보고자 한다.Race ConditionRace Condition 이란, 여러 Thread가 하나의 자원에 동시에 접근해서 자원이 변질되어 원하는 결과가 나오지 않는 현상을 뜻한다. 비동기적으로 코드가 실행되면, 여러 Thread 동시에 하나의 자원에 접근하는 경우가 생긴다. 이때 Thread가 한 자원 접근해 해당 자원에 변화를 주게 되면, Race Condition 발생되고, 원하는 결과를 얻기 힘들어진다. 코드를 통해 이해해 보자.var books = ["어린왕자", "백설공주", "해리포터", "신데렐라", "알라딘",..
[iOS]PhotoKit 알아보기(최종)
·
iOS&Swift
이번 주제는 PHImageManager, PHAssetChangeRequest, PHAssetCollectionChangeRequest, PHFetchResult 객체들에 대해서 알아보겠습니다.이번 글을 읽기 전 PHAsset과 PHAssetCollection에 대해 아직 보지 못하셨다면, PhotoKit 알아보기(2) 글을 참고해 주세요.먼저, PHAsset과 PHAssetCollection는 직접 수정할 수 없으며, 수정이 필요한 경우 각 PHAssetChangeRequest, PHAssetCollectionChangeRequest 객체를 이용해야 한다고, 이전 글을 통해 말씀드렸습니다. 하나씩 순서대로 알아보겠습니다.PHAssetChangeRequest일단 PHAsset를 편집하려면, PHPhoto..
[iOS]PhotoKit 알아보기(2)
·
iOS&Swift
PhotoKit 통해 기기 사진 라이브러리에 접근 권한을 받아오는 방법에 대해서PhotoKit 알아보기(1) 글을 참고하시기 바랍니다. 이번 글에서는 부여받은 권한을 이용하여 기기의 저장된 이미지 Asset을 가져오는 방법에 대해서 알아보겠습니다.이미지 Asset을 가져오기 위해선 PHFetchResult 객체를 통해 가져올 수 있지만, PHFetchResult 객체를 사용하기 위해선 PHAsset과 PHAssetCollection에 대해 알고 있어야 합니다. 하지만, 두 객체는 PHObject를 상속받기 때문에 PHObject 먼저 알아보겠습니다.PHObjectPHObject는 공식문서에 따르면, 직접 인스턴스를 만들거나 사용하면 안됩니다.하위 클레스인 PHAsset, PHAssetCollection,..
[iOS]PhotoKit 알아보기(1)
·
iOS&Swift
만약 우리가 만든 App에 사진첩의 사진을 가져오려고 한다면, PhotoKit을 사용해야 할 것입니다.이번 주제에서는 위 PhotoKit을 이용하여 사진첩에 있는 사진을 가져와 나만의 Custom 사진첩을 만들어 보겠습니다.하지만, 만들어 보기 전에 PhotoKit과 사진첩을 만들기 위한 객체 및 메서드에 대해서 먼저 알아보겠습니다.PhotoKitPhotoKit 공식문서에서는 PhotoKit을 Framework가 아닌 Technology라고 기재해 두었네요.PhotoKit은 사진 앱에서 관리하는 사진 및 비디오 자산에 대한 직접 액세스도 제공합니다.PhotoKit을 사용하여 우리의 앱에 이미지 또는 동영상을 표시 및 재생을 위해 Asset을 가져오거나, 캐시까지도 가능합니다.또한, 위 사진과 같이 이미지..
[iOS] TextView Placeholder 구현하기
·
iOS&Swift
적용 화면안녕하세요, 이번엔 textField는 가지고 있지만, TextView는 없는 Placeholder를 만들어보겠습니다.TextView에 Placeholder를 구현하는 방법은 사실 다양하지만, 저는 UILabel를 활용하여 구현해 보겠습니다.Label을 활용하는 경우 적은 코드로 쉽게 구현할 수 있으며, Placeholder가 없어지는 시점이 Text가 입력되는 순간에 없어지도록 할 수 있습니다. (더욱 Placeholder 다운 느낌🤔) 먼저, import UIKitimport SnapKitfinal class PlaceholderTextView: UIView { }저는 코드로 UI를 구현할 거기 때문에 UIView를 상속받는 Class를 하나 만들어 줍니다. 다음으로, UITextView..