[Swift] Race Condition과 Thread Safe
·
Swift
비동기적으로 기능을 구현하다 보면, 순차적으로 코드가 실행되는 것이 아니다 보니 주의해야 할 점이 생긴다. 그중 Race Condition과 해결책인 Thread Safe에 대해 알아보고자 한다.Race ConditionRace Condition 이란, 여러 Thread가 하나의 자원에 동시에 접근해서 자원이 변질되어 원하는 결과가 나오지 않는 현상을 뜻한다. 비동기적으로 코드가 실행되면, 여러 Thread 동시에 하나의 자원에 접근하는 경우가 생긴다. 이때 Thread가 한 자원 접근해 해당 자원에 변화를 주게 되면, Race Condition 발생되고, 원하는 결과를 얻기 힘들어진다. 코드를 통해 이해해 보자.var books = ["어린왕자", "백설공주", "해리포터", "신데렐라", "알라딘",..
[DFS] 백준 9466번: 텀 프로젝트(Swift)
·
코테
https://www.acmicpc.net/problem/9466 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net 난이도 골드 3 사용언어 Swfit 카테고리 DFS 풀이과정 텀 프로젝트 문제는 원형 트리가 생기면 그 노드끼리 팀이 형성되고, 최종적으로 팀에 속하지 못한 노드의 수를 구하는 문제이다. 문제의 핵심은 사이클이 형성된 노드의 개수를 구하는 것이다. (사이클이 형성됐다. == 특정 노드가 2번 탐색되었다.) 때문에 visited 배열 변수를 두어 탐색이 된 노드인지 아닌지 판별한다. 탐색되지 않은 노드이..
[iOS]PhotoKit 알아보기(최종)
·
iOS
이번 주제는 PHImageManager, PHAssetChangeRequest, PHAssetCollectionChangeRequest, PHFetchResult 객체들에 대해서 알아보겠습니다. 이번 글을 읽기 전 PHAsset과 PHAssetCollection에 대해 아직 보지 못하셨다면, PhotoKit 알아보기(2) 글을 참고해 주세요. 먼저, PHAsset과 PHAssetCollection는 직접 수정할 수 없으며, 수정이 필요한 경우 각 PHAssetChangeRequest, PHAssetCollectionChangeRequest 객체를 이용해야 한다고, 이전 글을 통해 말씀드렸습니다. 하나씩 순서대로 알아보겠습니다. PHAssetChangeRequest 일단 PHAsset를 편집하려면, PHP..
[iOS]PhotoKit 알아보기(2)
·
iOS
PhotoKit 통해 기기 사진 라이브러리에 접근 권한을 받아오는 방법에 대해서 PhotoKit 알아보기(1) 글을 참고하시기 바랍니다. 이번 글에서는 부여받은 권한을 이용하여 기기의 저장된 이미지 Asset을 가져오는 방법에 대해서 알아보겠습니다. 이미지 Asset을 가져오기 위해선 PHFetchResult 객체를 통해 가져올 수 있지만, PHFetchResult 객체를 사용하기 위해선 PHAsset과 PHAssetCollection에 대해 알고 있어야 합니다. 하지만, 두 객체는 PHObject를 상속받기 때문에 PHObject 먼저 알아보겠습니다. PHObject PHObject는 공식문서에 따르면, 직접 인스턴스를 만들거나 사용하면 안됩니다. 하위 클레스인 PHAsset, PHAssetCollec..
[iOS]PhotoKit 알아보기(1)
·
iOS
만약 우리가 만든 App에 사진첩의 사진을 가져오려고 한다면, PhotoKit을 사용해야 할 것입니다. 이번 주제에서는 위 PhotoKit을 이용하여 사진첩에 있는 사진을 가져와 나만의 Custom 사진첩을 만들어 보겠습니다. 하지만, 만들어 보기 전에 PhotoKit과 사진첩을 만들기 위한 객체 및 메서드에 대해서 먼저 알아보겠습니다. PhotoKit PhotoKit 공식문서에서는 PhotoKit을 Framework가 아닌 Technology라고 기재해 두었네요. PhotoKit은 사진 앱에서 관리하는 사진 및 비디오 자산에 대한 직접 액세스도 제공합니다. PhotoKit을 사용하여 우리의 앱에 이미지 또는 동영상을 표시 및 재생을 위해 Asset을 가져오거나, 캐시까지도 가능합니다. 또한, 위 사진과..
[DFS] 백준 1068번: 트리(Swift)
·
코테
https://www.acmicpc.net/problem/1068 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net 난이도 골드 5 사용언어 Swfit 카테고리 DFS 풀이과정 해당 문제는 트리의 Node중 하나가 지워졌을 때 마지막 노드(리프 노드)를 탐색하는 문제이다. 때문에 childNode로 해당 노드의 자식 노드를 배열에 저장해 탐색한다. 하지만, 탐색전 입력받은 노드를 제거 후 탐색해야 하기 때문에 target(삭제할 노드)를 통해 parentNode를 검색하고, 해당 값으로 childNode ..