iOS 개발/iOS 9

[WWDC19] Architecting Your App for Multiple Windows

[WWDC19] Architecting Your App for Multiple Windows https://developer.apple.com/videos/play/wwdc2019/258/ Architecting Your App for Multiple Windows - WWDC19 - Videos - Apple Developer Dive into the details about what it means to support multitasking in iOS 13. Understand how previous best practices fit together with new... developer.apple.com 제가 이해한 부분 위주로 정말 대충 정리했습니다 ㅡ.,ㅡ ;; 반박 시 님 말이 다 맞음 ~ ..

iOS 개발/iOS 2023.03.07

[iOS] 이미지 캐시 모듈 구현하기 (feat. Kingfisher)

[iOS] 이미지 캐시 모듈 구현하기 (feat. Kingfisher) 부스트캠프에서 그룹 프로젝트를 진행 중, 주간 발표 세션에서 다른 팀이 이미지 캐시 모듈을 개발했다는 소식을 들었습니다. 이미지 캐시를 UIImage 의 extension 을 이용해서라던지, 혹은 클래스 하나로 분리하여 디스크에 파일을 저장해본 적은 있지만 완전히 독립적으로 동작할 수 있는 모듈은 구현해본적이 없던 터라 저희도 이미지 캐시 모듈을 구현해보고자 했습니다. 아무래도 iOS 이미지 캐시 라이브러리 중 가장 유명한 Kingfisher 를 모방해보면 좋겠다는 생각을 했고, 저희 이미지 캐시 모듈 이름은 KingReceiver 로 정했읍니다. ^.^ GitHub - trumanfromkorea/KingReceiver Contri..

iOS 개발/iOS 2022.12.28

[iOS] 메모리 구조

[iOS] 메모리 구조 프로그램이 실행되면 OS 는 메모리에 프로그램을 위한 공간을 할당해줍니다. 메모리는 크게 4가지 영역으로 나뉘어져 있는데, 이는 각각 코드 영역, 데이터 영역, 힙 영역, 스택 영역이라고 불립니다. 코드 영역 소스코드가 기계어 형태로 저장됨 컴퓨터가 읽을 수 있는 가장 밑단의 언어로 binary 하게 이루어짐 (0, 1) 컴파일 타임에 결정되고, 중간에 코드가 변경되지 않도록 Read-Only 형태로 저장됨 코드 영역은 말 그대로 프로그램의 소스코드를 기계어 형태로 저장하는 영역입니다. 프로그램이 실행되며 소스코드가 변경되면 안되기 때문에 Read-Only 형태로 저장됩니다. 데이터 영역 전역변수, static 변수가 저장됨 프로그램 시작과 동시에 할당되며 프로그램이 종료되어야 메..

iOS 개발/iOS 2022.07.12

[iOS] Delegate Pattern

[iOS] Delegate Pattern Delegate 는 위임하다, 대리자 등의 뜻을 가진 단어입니다. 말 그대로 Delegate Pattern 은 대리자를 가지고 있는 객체가 대리자 객체에게 자신의 일을 위임하는 형태의 디자인 패턴입니다. 이는 하나의 객체가 모든 일을 처리하는 것이 아니라 다른 객체가 이를 일부분만 확장하여 처리하도록 위임하는 방식입니다. 말만 들어서는 잘 이해가 되지 않을수도 있으니 예시를 들어 설명해보겠습니다. 예시 영화를 만드는 Producer 라는 객체가 있다고 가정하겠습니다. 영화를 만들려면 누군가가 연기를 해야하는데, 대부분 감독들이 직접 연기를 하는 경우는 없죠. 그러니 다른 누군가에게 자신이 생각한 연기를 하도록 시킵니다. 이렇게 대신 연기를 하는 객체를 Actor ..

iOS 개발/iOS 2022.07.06

[iOS] UINavigationController

[iOS] UINavigationController Navigation Controller 는 1개 이상의 자식 View Controller 를 관리하는 컨테이너 View Controller 입니다. 한번에 하나의 자식 View Controller 만 화면에 나타낼 수 있으며, View Controller 에서 아이템을 선택하면 애니메이션을 이용해 새로운 View Controller 을 화면에 표시하고, 원래 화면에 존재하던 View Controller 는 가려지게 됩니다. 화면 상단의 Navigation Bar 에 있는 Back 버튼을 누른다면 현재 표시되고 있는 View Controller 는 화면에서 제거되고 그 아래 있던 View Controller 가 표시됩니다. Navigation Stack ..

iOS 개발/iOS 2022.06.30

[iOS] 앱 생명주기 (App LifeCycle)

[iOS] 앱 생명주기 (App LifeCycle) 생명주기란, 앱이 최초 실행될 때부터 앱이 종료될때까지의 주기를 뜻하며, 앱은 이 주기동안 여러 상태를 가집니다. 오늘은 iOS 앱의 생명주기에 대해 알아보도록 하겠습니다. 앱의 상태 앱의 상태는 현재 수행 가능한 동작과 수행 불가능한 동작을 결정짓습니다. 예를 들어 Foreground 상태인 앱은 화면을 점유하고 있기 때문에 시스템 리소스보다 높은 우선순위를 가지고 있습니다. 반대로 Background 상태인 앱은 최소한의 작업을 수행해야 합니다. 사실 가급적이면 아무것도 하지 않는게 좋습니다. 만약 앱의 상태가 변경된다면, 앱은 그에 따라 다른 동작을 수행해야 합니다. 이러한 상태들과 생명주기는 iOS 12 까지 UIApplicationDelegat..

iOS 개발/iOS 2022.06.24

[iOS] Frame & Bounds

[iOS] Frame & Bounds Frame 과 Bounds 는 모두 UIView 의 CGRect 프로퍼티로 각각의 origin 과 size 를 가지고 있습니다. 얼핏 보았을때는 같은것이 아닐까 싶을수도 있지만, 오늘은 이 둘의 차이점에 대해 명확하게 알아보도록 하겠습니다. Frame 먼저 Frame 은 자신의 SuperView (상위 뷰) 의 좌표시스템에서의 위치와 크기를 나타냅니다. 이 말은 곧 자신의 SuperView 를 어떤 좌표평면으로 가정하고, 자기 자신은 해당 좌표위에 존재하는 View 라고 생각할 수 있겠죠? 예시로 가장 바깥쪽의 하얀색 영역을 First View, 안쪽의 핑크색 영역을 Second View, 그 안쪽의 노란색 영역을 ThirdView 라고 하겠습니다. 각 View 들은..

iOS 개발/iOS 2022.06.17

[iOS] UITableView & UICollectionView

[iOS] UITableView & UICollectionView 앱 내에서 여러 컨텐츠를 보여주기 위해서는 리스트 형태로 출력하는것이 매우 효과적입니다. iOS 에서는 UITableView 와 UICollectionView 를 이용해 리스트 형태를 구현할 수 있는데, 오늘은 이 둘의 특징에 대해 알아보겠습니다. UITableView 단일 Column 을 가지고 Row 마다 데이터를 표시하는 View UIScrollView 를 상속받으며 수직 스크롤만 가능 Section 을 이용해 Row 들을 그룹화할 수 있음 각 Section 은 Header 와 Footer 를 옵션으로 가질 수 있음 TableView 는 계층구조의 데이터가 있는 앱에서 일반적으로 사용됩니다. TableView 와 Navigation ..

iOS 개발/iOS 2022.06.17

[iOS] ViewController LifeCycle (생명주기)

[iOS] ViewController LifeCycle (생명주기) UIKit 을 이용해 앱을 개발하다보면 viewDidLoad() 라는 메소드를 보신적이 있을겁니다. 이는 ViewController 의 생명주기 메소드중 하나입니다. 생명주기란 ViewController 가 생성되고 사라지는 등 View 의 상태와 관련된 과정을 뜻하는데, 오늘은 이 생명주기 메소드들에 대해 알아보겠습니다. 위 이미지는 ViewController 의 생명주기라고 검색하면 쉽게 찾아볼 수 있는 이미지입니다. 하지만 위의 이미지에 포함되어있는 viewDidUnload() 메소드는 iOS 6 부터 사용되지 않고 있습니다. ViewController 의 생명주기에 대한 아무 지식이 없다고 가정했을 때 위 이미지가 이해하기 쉬운 ..

iOS 개발/iOS 2022.06.16