-
[iOS] 윈도우란? (feat. UIWindow)iOS/🤖 App 2021. 7. 5. 17:43
안녕하세요🐶 이번 시간에는 윈도우에 대해서 공부해보겠습니다. 윈도우는 UIWindow 오브젝트를 가리키는 말인데요. 윈도우라는 개념이 필요하기 시작할 때는 아마 스토리보드 없이 UI를 처음 코드로 구현해볼 때 일 것 같아요. 이 글에서는 언제 직접 윈도우를 생성해야되는지에 대해서도 다루었습니다. 두 개의 공식문서를 종합해서 정리하다보니 내용이 좀 많아진 것 같네요. 요약 해보자면 윈도우는 뷰들을 담는 컨테이너이다. 윈도우는 이벤트를 전달해주는 매개체이다. iOS 앱은 콘텐츠를 화면에 보여주기 위해서 최소 1개 이상의 윈도우를 가지고 있다. (보통 1개) 시스템 윈도우에서 생성된 이벤트들은 Key Window 로 전달이 된다. 이 글에는 없는 것 External Display 에 관련된 내용 그럼 시작해볼..
-
[iOS] Core Animation 이란? (2)iOS/🤖 App 2021. 7. 5. 12:12
안녕하세요🐶 이전 글에 이어서 Core Animation Basic 문서를 정리해 보았습니다! 바로 시작해볼게요!! Core Animation 은 뷰와 다른 시각적 요소들을 움직이는데 필요한 범용 목적의 시스템을 제공합니다. Core Animation 은 뷰를 대체하려는 목적으로 사용하는 것이 아닙니다. 오히려 뷰들과 결합되어있는 기술입니다. 그리고 이 기술의 목적은 콘텐츠를 움직이는데 있어서 더 나은 성능과 지원을 제공하는 것입니다. Core Animation 을 통해 뷰의 콘텐츠를 비트맵 형태로 캐싱함으로서, 그래픽 장치에 의해 바로 수정될 수 있도록 하여 위와 같은 목적을 달성합니다.( 비트맵 형태로 캐싱한다는 표현이 자주 등장함... 그 주체는 레이어임) 몇가지 경우에서, Core Animatio..
-
[iOS] Core Animation 이란? (1)iOS/🤖 App 2021. 7. 5. 11:51
안녕하세요🐶 이번 시간에는 Core Animation 에 대해서 간단하게 살펴보겠습니다. 이 프레임워크는 CALayer 를 공부하는 도중 배경지식이 필요하다고 생각하여 관련 문서를 정리하면서 공부하였습니다. 그런데 문서 양이 많아서 다 다루지는 않고, 개요와 Basic 부분까지 정리해보았습니다. 뒤의 부분은 더 이상 사용하지 않는 기술들도 있고, 핵심 개념은 아니여서 다음으로 정리를 미룰게요 ^^ 그럼 시작해볼게요!! Core Animation 에 대하여 원래는 Metal 과 Core Graphics 를 통해 Graphics Harware 에 직접 접근하여 제어할 수 있습니다. 여기서 Metal 은 OpenGL 을 대체하여 애플이 직접 만든 그래픽 제어 인터페이스입니다. Core Animation 은 바..
-
[iOS] CALayer 란?iOS/🤖 App 2021. 7. 5. 10:54
안녕하세요🐶 이번 시간에는 CALayer 에 대해서 공부해보겠습니다. 이 클래스는 피그마에서 생성한 이미지를 코드로 변환할 때 처음 보았는데요,, 어떻게 사용되는 클래스인지 궁금해서 공부하게 되었습니다. 또한 UIVIew 는 기본적으로 layer 속성으로 불리는 root layer 를 가지고 있습니다. iOS 에서 모든 뷰는 layer-backed View 이기 때문입니다. 간단하게 layer 를 사용하는(혹은 레이어의 지원을 받는) View라고 이해하시면 될 것 같습니다. 그럼 시작해볼게요🔥 그.런.데. 공식 문서에 나와있는 CALayer 는 읽으면 무슨 내용인지 잘 이해가 가지 않습니다. (어느 정도의 배경지식이 필요) 그래서 Core Animation Documentaion Archive 의 내용을..
-
래스터 이미지와 비트맵 그리고 벡터 이미지General/🟢 General 2021. 6. 30. 12:51
안녕하세요🐶 이번 시간에는 래스터 이미지와 비트맵, 그리고 벡터 이미지에 대해 간단하게 알아보려고 합니다. 저는 개발자이기 때문에 원리와 장단점 위주로 이해하고, XCode 에서는 무엇을 사용하는게 나을지 판단하기 위해서 공부했어요. 글에서 주제와 관련된 키워드가 나오니 자세한 내용은 따로 검색을 해보시는 것도 좋을 것 같습니다. 그럼 시작할게요!!🔥 3줄 요약 1. 래스터, 비트맵은 점으로 이미지를 표현, 고정 해상도을 가지고 있다 2. 벡터는 점, 선, 면을 수학공식으로 표현해서 표현, 해상도로부터 자유롭다 3. 상황에 맞게 사용해야 한다 래스터 이미지 래스터 이미지는 인쇄와 관련된 용어 이고, 비트맵 이미지와 유사한 의미를 가지고 있습니다. 작은 점을 무수히 여러 번 찍어 만들어낸 이미지를 가리킵니..
-
[iOS] Dependency Injection (의존성 주입) 이란?iOS/🤖 App 2021. 6. 20. 16:48
1차 수정: 21.08.11 2차 수정: 21.09.27 안녕하세요 🐶 이번 시간에는 흔히 DI 라고 불리는 의존성 주입에 대하여 알아보겠습니다. 그럼 하나씩 알아볼게요!!!🔥🔥🔥 Dependency Injection means giving an objects its instance variable. Really. That's it - James Shore 위 문장은 의존성 주입에 대해 가장 간단하고 명료하게 설명하고 있습니다. 이 개념을 설명할 때 자주 등장하는 인용문인 것 같아요! Dependency Injection 은 A 라는 객체의 속성을 A가 아닌 다른 객체가 초기화해주는 것을 의미합니다. 왜 스스로 하지 않고 다른 객체를 통해서 초기화해야만 할까요?? 결론부터 살펴보자면: 객체간 결합을 느슨..
-
[iOS] About App Development with UIKit (UIKit 으로 앱 개발하기)iOS/🤖 App 2021. 6. 16. 01:01
1차 수정: 21.08.02 안녕하세요🐶 오늘은 'About App Development with UIKit' 라는 문서를 중요한 내용 위주로 정리해보겠습니다 UIKit 의 역할 UIKit 프레임워크는 iOS 앱을 제작할 때 필요한 필수 오브젝트들을 제공해줍니다. 예를 들어서 우리가 만든 컨텐츠를 화면에 표시해 줄 수 있는 오브젝트라던가, 콘텐츠와 상호작용을 하는 기능을 할 수 있는 오브젝트라던가, 마지막으로 시스템과의 상호작용을 관리할 수 있는 오브젝트를 제공해줍니다. 앱들은 UIKit 프레임워크에 의존해서 위와 같이 기초가 되는 동작들을 수행합니다. UIKit 은 이것뿐만 아니라 동작을 커스터마이즈 할 수 있는 방법도 제공합니다. UIKit 과 Foundation 을 합하여 Cococa Touch F..
-
[iOS] DispatchQueue.main.sync { } 는 어떻게 작동할까?iOS/🤖 App 2021. 6. 7. 15:27
선수지식 : [iOS] GCD란? 안녕하세요🐶 이번 시간에는 GCD 를 처음 공부할때 쉽게이해가지 않았던DispatchQueue.main.sync { } 의 동작방식에 대해 다뤄보려고 합니다. StackOverflow 에서 main 쓰레드에 sync 를 전달하면 앱이 강제종료 되는 이유를 찾아보면, `Main queue에 sync로 Task를 전달하면 Deadlock 이 걸린다` 정도의 모호한 이야기만 나와있어서 제대로된 이유를 알고 싶어서 한번 알아보게 되었습니다. 위와 같이 직접 작성한 User Code 에서 DispatchQueue.main.sync(block:) 을 호출하면 앱에 크래시가 발생하고 강제종료 됩니다. 이번 글은 이 현상이 왜 발생하게 되는지 알아보는 글입니다. 결론을 우선 말씀드리면..
-
[iOS] GCD (Grand Central Dispatch) 란? (feat. main & global dispatch queue)iOS/🤖 App 2021. 6. 7. 00:19
안녕하세요. 오늘은 iOS의 동시성 프로그래밍에 자주 사용하는 GCD 에 대해서 공부하겠습니다🐶 그럼 시작해볼게요🥳 GCD GCD 는 iOS 에서 멀티코어 프로세서에 코드를 동시에 실행시키게 해주는 프레임워크입니다. :: 그리고 macOS, watchOS, tvOS 에서도 사용합니다. GCD 에서는 하나의 작업단위인 Task 를 Dispatch Queue 에 전달하기만 하면 나머지는 시스템이 알아서 처리하고 실행시켜 줍니다. Task 의 단위는 블록이나, DispatchWorkItem 의 인스턴스 형태로 존재합니다. :: 블록은 `{ }` 로 감싸진 실행 코드 BSD 하위 시스템이나, Core Foundation, Cocoa API들은 이 프레임워크를 사용함으로서 시스템과 애플리케이션의 실행속도, 효율성..