분류 전체보기
-
GCD, DispatchiOS 2021. 1. 19. 13:37
개인적으로 공부하며 정리하는 블로그 입니다. 오류나 부족한 부분이 있을 수 있으니 감안하여 봐주시고 아낌없는 조언 감사드립니다 :D [한 줄 요약] GCD - 작업을 병렬적으로 처리하기 위해 애플이 제공해주는 API. C기반 메커니즘의 저수준 API로 스레드를 생성하고 할당하는 등의 스레드 관리를 대신해준다. # sync vs async, Queue에 작업을 추가하는 방식 sync - 작업을 추가하고 작업이 끝날 때까지 기다린다. async - 작업을 추가하고 바로 넘어간다. # serial vs concurrent, Queue 안의 작업을 처리하는 방식 serial - 작업을 하나씩 꺼내서 처리한다. concurrent - 작업을 꺼낸 뒤 기다리지 않고 바로 이어서 다음 작업을 꺼낸다. * main 큐..
-
[개발자 문서읽기] UIApplicationMain(::::)iOS 2021. 1. 16. 16:43
개인적으로 공부하며 정리하는 블로그 입니다. 오류나 부족한 부분이 있을 수 있으니 감안하여 봐주시고 아낌없는 조언 감사드립니다 :D UIApplicationMain(::::) 는 iOS 앱이 시작하기 위한 핵심 메소드 입니다. 말 그대로 앱이 되면 UIApplication 객체와 Delegate 객체를 만들고 info.plist에서 필요한 nib file을 로드하고 메인 이벤트 루프를 실행시킵니다. swift 5.3 부터는 @main , 그 이전엔 @UIApplication 이라는 attribute를 사용하게 되는데요, 앱이 처음 실행되면 시스템은 이 attribute를 찾아서 UIApplicationMain(::::)를 호출하고 앱을 실행합니다. 따라서 이 attribute가 없다면 아래와 같이 시작 ..
-
[개발자 문서읽기] Responding to the Launch of Your AppiOS 2021. 1. 16. 15:54
개인적으로 공부하며 정리하는 블로그 입니다. 오류나 부족한 부분이 있을 수 있으니 감안하여 봐주시고 아낌없는 조언 감사드립니다 :D Initialize your app’s data structures, prepare your app to run, and respond to any launch-time requests from the system. 앱을 실행하면 어떤 일들이 일어날까요? 관련 문서를 읽으면서 정리해봤습니다. 아이폰 홈에서 앱을 클릭하면 스플래시 화면이 보이면서 앱이 시작하게 되죠? 스플래시 화면(런치 스크린)은 "앱이 잘 실행은 됐어요. 준비될 때까지 조금만 기다려주세요" 라는 의미로 보여주는 화면입니다. 그 런치스크린이 보여지는 동안에 이루어지는 작업들에 관한 이야기 입니다. 이 문서를 ..
-
[개발자 문서읽기] UIApplicationiOS 2021. 1. 16. 11:40
공부하며 번역한 내용입니다. 오역과 의역이 있을 수 있습니다. 정확한 내용은 원문을 참고해주세요 :) : iOS에서 실행되는 앱을 위한 중앙 집중식 제어 및 조정점 class UIApplication : UIResponder Overview 모든 iOS앱은 반드시 하나의 UIApplication instance를 갖고 있습니다. (아주 드물게 subclass가 있을 수 있습니다.) 앱이 시작할 때 시스템은 UIApplicationMain(::::) 를 호출합니다. 이 함수는 shared로 접근할 수 있는 싱글턴 UIApplication 객체를 만듭니다. application 객체는 들어오는 사용자 이벤트의 초기 라우팅을 처리합니다. control 객체들에 의해 전달된 액션 메세지들을 적절한 객체들에게 전..
-
앱에서 너무 많은 메모리를 사용하면 어떻게 될까? 어떻게 확인할까?iOS 2021. 1. 15. 12:34
개인적으로 공부하며 정리하는 블로그 입니다. 오류나 부족한 부분이 있을 수 있으니 감안하여 봐주시고 아낌없는 조언 감사드립니다 :D 앱이 메모리를 너무 많이 사용하면 어떻게 될까요? 갑자기 궁금해져서 찾아보다가 Reducing Your App's Memory Use 문서를 읽은 내용을 정리해보려고 합니다 :) 아이폰 디바이스에서 메모리는 매우 제한적입니다. 궁금해서 디바이스 별로 RAM 크기를 찾아봤는데 찾아봤는데 이정도 되는 것 같아요. (오피셜은 아닙니다...) 메모리는 한정된 자원이고, 가뜩이나 넉넉하지 않은데 여러 앱, 프로세스, 커널 등이 함께 써야하는 자원이기 때문에 잘 관리해줘야 합니다. 따라서 하나의 앱이 너무 욕심부리면 아이폰은 적당히 하라고 먼저 경고를 보내줍니다. EXC_RESOURC..
-
TreeComputer Science/DataStructure 2021. 1. 14. 18:00
- 객체간의 계층적인 관계를 나타낸다 - 빠르고 효율적으로 탐색할 수 있다 - 데이터의 정렬된 형태를 보여준다 - 사이클이 없는 그래프 - 텍스트의 prefix 매칭을 빠르게 할 수 있다. ex) - 회사나 정부의 조직 구조 - 나라, 지방, 시•군별 등 계층적인 데이터 - 인덱스 오늘은 기본적이지만 아주 중요한 Tree에 대해 알아보겠습니다. Tree 자체보다도 여기서 파생된 트리들이 더 중요하지만 그래도 기본부터 정리해보려고 해요 :) 자료구조란 데이터들을 잘 관리하게 생겨났을텐데요, 트리는 왜, 언제 필요할까요? 트리는 계층적인 관계를 나타내기 위해 사용합니다. 계층 관계는 우리 일상 생활과 아주 많이 밀접해있습니다. 먼저 우리 가족의 관계도를 그려본다고 생각해봅시다. 부모님 형제 자매가 있고, 다..
-
백준 11725 트리의 부모 찾기Algorithm/BOJ 2021. 1. 14. 16:44
출처: https://www.acmicpc.net/problem/11725 분류: 트리, 그래프 탐색 접근방식 우선 주어진 대로 트리를 모두 연결하고 루트 노드부터 부모를 연결해나가면 되는 문제입니다! 연결된 노드를 우선 connects에 담아두고 부모가 결정되면 connects에서는 지워주는 방식으로 구현했어요! 처음엔 연결 할 때마다 체크하려고 했는데 다 연결하고 수정해나가는 건 쉬운데, 이건 만만치 않더라구요.. 해결방법 import Foundation protocol Readable { func readSingleValue() -> String func readArray(with separator: Character) -> [String] } extension Readable { func read..
-
백준 1991 트리 순회Algorithm/BOJ 2021. 1. 13. 18:35
출처: https://www.acmicpc.net/problem/1991 분류: 트리, 재귀 접근방식 기본적인 이진 트리 순회 문제입니다. 트리를 순회하는 방법은 대표적으로 preorder / inorder / postorder 방법이 있는데요, 이는 현재 노드를 언제 방문할건지가 기준이 됩니다. preorder 현재 노드를 먼저 방문하겠다는 뜻입니다. inorder 현재 노드를 중간에 방문하겠다는 뜻입니다. postorder 현재 노드를 나중에 방문하겠다는 뜻입니다. 이 문제는 이진 트리이므로 왼쪽, 오른쪽을 재귀적으로 순회해주면서 언제 방문할지(print or 별도의 체크)만 결정해주면 됩니다. 해결방법 class Graph { var nodes = [T: Node]() class Node { var..