iOS
-
RIBs) tutorial1iOS 2021. 6. 25. 23:58
uber 공식 튜토리얼을 따라가면서 제 나름대로 정리한 내용입니다. 보다 정확한 내용은 원문을 참고해주시고 오류나 수정사항이 있으면 알려주시면 감사하겠습니다. 🙇🏻♂️ 전체 코드를 보시려면 여기로 ;) 목표 간단한 이 튜토리얼들은 간단한 tictactoe 게임을 만들어보는 것입니다. 튜토리얼을 따라가보면서 RIB 에 대해 이해하고 서로가 어떻게 상호작용하는지 알아봅니다 :) Project 구조 먼저 튜토리얼 템플릿을 다운받습니다. 기본 템플릿에는 Root, LoggedOut 2개의 RIB 폴더가 만들어져 있네요. 제일 먼저 AppDelegate 에서 RIB을 생성해주면서 시작되는데요, Root RIB은 이미 만들어져 있고, LoggedOut은 DELETE_ME 라는 파일만 있습니다. 원하는 대로 DEL..
-
CALayer 그리고 View와의 관계iOS 2021. 1. 31. 17:58
개인적으로 공부하며 정리하는 블로그 입니다. 오류나 부족한 부분이 있을 수 있으니 감안하여 봐주시고 아낌없는 조언 감사드립니다 :D CA, Core Animation CALayer의 CA는 Core Animation의 prefix입니다. CALayer를 알기 전에 먼저 Core Animation에 대해 알아보겠습니다. Core Animation Programming Guide를 보면 Core Animation의 역할과 목적에 대해 나와있습니다. Core Animation provides a general purpose system for animating views and other visual elements of your app. Core Animation is not a replacement for..
-
Intrinsic Content Size, Content Hugging, Content Compression ResistanceiOS 2021. 1. 24. 14:44
개인적으로 공부하며 정리하는 블로그 입니다. 오류나 부족한 부분이 있을 수 있으니 감안하여 봐주시고 아낌없는 조언 감사드립니다 :D Intrinsic Content Size Intrinsic Content Size란 View의 콘텐츠(내용물)를 고려한 자연스러운 크기를 의미합니다. 하지만 모든 뷰가 Intrinsic Content Size를 갖고 있는 건 아닙니다. 그냥 UIView 같은 경우엔 기본적으로 내용이 없는 빈 뷰이기 때문에 intrinsic content size를 갖지 않습니다. 반면, UIButton 같은 경우 title을 포함해 약간의 패딩까지 가지고 있습니다. 표로 간단히 정리해보죠. View Intrinsic Content Size UIView, NSView Intrinsic Con..
-
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..