IOS application/Swift 27

13. When viewDidAppear and viewWillAppear are not called.

When viewDidAppear and viewWillAppear are not called. ViewController간의 이동을 한 뒤 다시 원래의 ViewController로 돌아오는 경우가 발생한다. 아래의 그림과 같이 ViewController에서 SecondViewController을 present하고 dismiss를 통해 다시 ViewController로 돌아오는 경우를 말한다. 이때 ViewController에서 viewDidAppear 과 viewWillAppear이 실행되지 않는 경우가 발생한다. 답은 fullScreen으로 불러오면 되는 것이다. ViewController을 옮기게 되면 위의 그림과 같이 화면이 존재하는 상태로 위를 살짝 덮는 형태로 되어있고, 뒤에있는 View는 A..

12. 선배가 알려주는 팁

1. 신입을 위한 팁 기술 블로그 GitHub 프로젝트 경험 서비스 출시 2. 신입 채용시 면접관 기대 태도 (열정, 배우려는 자세) 잘한다 (잘 할 것 같다, 빨리 배운다) 3. 경력 채용시 면접관 기대 태도 (기본적인 성품, 지원 회사에 대한 철저한 조사) 잘한다 (실제로 잘하는 영역이 있다, 기술적 문제를 어떻게 해결했는가) 비지니스를 안다 (사용자 가치에 대한 고민을 함께할 수 있는가, 사회적 관점으로 새로운 기술의 등장배경과 가치를 파악하는가) 4. 공부할 때 보는 사이트들 최신 article이 많다. https://nshipster.com/ 퀄리티 좋은 자료가 많지만, 유료이다. https://www.objc.io/ objc.io Latest Blog Post Learn SwiftUI layo..

11. Crash between Swift Package and Cocoapods

Crash between Swift Package and Cocoapods 간혹 Swift Package와 Cocoapods로 추가한 라이브러리가 충돌하는 경우가 발생한다. 예를들어 Kingfisher은 Swift Package로 연결하고, Firebase는 Cocoapods로 연결할 경우 Kingfisher의 연결에 문제가 생길 수 있다. 해결방법은 간단하다. Swift Packages로 연결된 라이브러리를 업데이트 시키면 된다. Kingfisher을 클릭하고 Exact로 Version 변경을 한다 —> Up to Next Major 상태이기에 그냥 Done시키면 아무 변화가 없다. 그 후, 다시 Upt to Next Major로 바꿔주면 된다. 끝이다. 성공적으로 Build 될 것이다.

9. Keyboard

Simulator을 실행하면 TextBar혹은 SearchBar에서 키보드가 등장하지 않는 경우가 발생한다. simulator에서 Connect Hardware Keyboard를 선택하게 되면 내 컴퓨터의 키보드를 실제 앱 창에서 사용할 수가 있다. Toggle Software keyboard를 선택하게 되면 시뮬레이터 상의 키보드를 껏다 켰다를 가능캐 해준다. 시뮬레이터 상의 키보드를 등장시키고 싶으면 이를 한번 선택하면 된다. 끌때도 한번 선택하면 된다.

8. Tabbar, SafeArea, collectionView 설정

Storyboard Tabbar Controller initial 우리는 ViewController이 실행되면 home에서 시작되도록 해야하고, 이때 적절한 초기화 작업이 필요하다. 간단하다 --> Tabbar Controller을 "Is initial View Controller"을 체크해주면 된다. SafeArea 현재 위의 View에서는 사진이 SafeArea를 넘어간 것을 확인할 수 있다. 어떻게 하면 이런 설정이 가능할까? 현재 HomeView는 다음과 같은 구조로 되어있다. img_header은 View에 존재하고 View는 Scroll View 과 vertical spacing 을 0으로 맞추어서 scrollView의 top을 따라가게 된다. 그러면 Scroll View의 Second Ite..

7. Swift Escaping Closure ?? 😁

Swift Escaping Closure ?? 참고자료 Apple Inc. The Swift Programming Language (Swift 3.1) - Escaping Closure escaping closure swift3 What do mean @escaping and @nonescaping closures in Swift? Completion handlers in Swift 3.0 https://hcn1519.github.io/articles/2017-09/swift_escaping_closure Swift Escaping Closure 이해하기 Swift의 Escaping Closure에 대해 알아봅니다. hcn1519.github.io https://medium.com/@jgj455/%EC%..

5. AVMetadataItem

우리는 AVPlayerItem의 데이터를 관리하다가 AVMetadataItem 타입을 알게 되었다. 이것이 무엇이고 어떻게 사용하는지를 살펴보자 우리는 AVPlayerItem type를 갖는 데이터들의 array에서 특정 index를 인자로 주면 Track type로 반환하는 함수를 만들었다. 그런데 기존의 파일은 AVPlayerItem이기에 우리는 extention 키워드를 사용해서 convertToTrack() 라는 메소드를 만들어 사용했다. AVPlayerItem.convertToTrack() 우선 AVPlayerItem 안에는 asset라는 property가 존재하는데, 이 asset property안에는 metadata라는 것이 존재한다. 우리가 곡이라는 파일이 있을 때, 우리들이 현재 듣고 있..

4. Design Patton: MVVM 패턴

Design Patton: MVVM 목차 1. 개발의 Design Patton? 2. MVC 패턴: Model - View - Controller (디자인 패턴의 근본) 3. MVVM 패턴 1. 개발의 Design Patton? Patton은 보통 어떤 일이나 목적을 효율적으로 달성하기 위한 체계 이전의 개발은 개발의 패턴이 없어 유지보수와 관리가 힘들었다. 그래서 특정 패턴을 만들어 유지보수와 관리가 쉽게 하였다. 그것이 우리가 알고있는 MVC, MVVM 같은 패턴이다. 디자인 패턴의 목표 기술부채의 최소화 재사용 및 지속 가능 위에는 추상적이고, 구체적인 코드 구조에 대한 전략을 짜는 것이 목표겠지. 클린 아키텍처 디자인 패턴 이에 대한 고민에 대한 답을 찾아보자!! 2. MVC 패턴: Model -..

3. 상속은 언제 하면 좋은가?

장점: 중복되는 코드가 줄어든다. 단점: depth가 깊어지면 복잡하다. 짬에서 나오는 철학이 필요하다. Single Responsibility (단일 책임): 각 클래스는 한 개의 고려사항만 있으면 된다. -> 여러 책임을 다 가지려하면 복잡해진다. Type Safety (타입이 분명해야 할 때): 클래스 간의 명확한 구분이 필요한 경우 -> 학교 축구동아리에서 축구선수를 뽑으려고 하는데 미술부, 과학부 같이 너무 아무나 들어오게 하고 싶지 않아서 운동부 애들로 제한을 두고 싶어서 상속을 한다. Shared Base Classes(다자녀가 있다!): 기본 동작이 다양하게 구분되어야 하는 경우 -> 학생이 학습을 하는 기능이 있다면, 미술학생은 미술공부를 학습하고 체육학생은 운동공부를 학습하는 것과 같이..