Swift Collection 타입을 안전하고, 효율적으로 사용해보자
Swift 2022. 12. 10. 20:54

HTML 삽입 미리보기할 수 없는 소스 Slice 활용하기! Swift의 Array는 Collection 프로토콜을 채택하고 있는 자료구조이다. 만약 Collection의 두 번째 원소를 얻으려고 하는 extension 코드를 작성해본다고 하자. 일단 가장 기본적인 로직으로! 일단 Collection 의 원소 갯수가 2개 이상인지 확인한다. 만약 두 개 이상이면, second 원소를 반환한다. 두 개 보다 적으면, nil을 반환한다. extension Collection { var second: Element? { // Collection의 원소 갯수가 2개 이상인지 확인한다. guard count >= 2 else { // 두 개 보다 적으면, nil을 반환한다! return nil } // 만약 두개..

Tuist로 Xcode 프로젝트 설정하기
IOS 개발일지 2022. 11. 4. 16:31

HTML 삽입 미리보기할 수 없는 소스 Tuist로 프로젝트 설정하기! Tuist 를 사용하게 된 계기 아카데미 내에서 프로젝트를 하는 동안, pbxproj 파일의 충돌은 계속해서 일어났다. 이것을 해결하기 위해 git attributes 파일도 작성해봤지만, 여전히 충돌은 계속해서 일어났고, develop 브랜치에 rebase 혹은 pull 을 땡기면 github 가 자동으로 충돌을 머지해주는 것 같았지만, 종종 pbxproj 파일이 깨지는 경우가 발생했고 그 때마다 머지 전 커밋으로 돌아가 conflict 를 직접 해결하거나, 아니면 눈알 빠지게 pbxproj 파일을 훑어보며 잘못 합쳐진 부분을 직접 수정해야 했다... 문제는 이런 사태로 인해 시간이 너무 많이 소요된다는 점이다. 프로젝트가 매우 작..

Delegate pattern - iOS
디자인 패턴 2022. 7. 23. 14:56

Delegate Pattern 이란? Delegate라는 단어는 `위임하다` 라는 뜻을 지니고 있다. 즉 Delegate Pattern 이란 주로 객체의 행동(메소드) 또는 프로퍼티 의 구현을 다른 객체에게 맡겨야 할 필요가 있을 때 사용한다. 아래의 다이어그램을 살펴보자 Object using a delegate - delegate 가 필요하거나 사용하는 객체로, 어떤 이벤트가 발생했을 때 이에 대응되는 delegate 의 메소드를 호출한다. Delegate protocol - delegate object 가 구현해야 할 메소드들을 정의하는 protocol 이다. Object acting as a delegate - delegate protocol 을 준수하는 객체로, Object using a del..

Scene Delegate의 역할에 대해 설명하시오
ios 면접 질문 2022. 7. 22. 15:31

iOS 12 이하 버전의 AppDelegate iOS 12 이하 버전에서는 Scene Delegate 라는 것이 존재하지 않고, 오로지 AppDelegate 만 존재했다. iOS 12 이하 버전에서의 AppDelegate는 다음과 같이 2가지 역할을 했었다. Process Level 의 이벤트 발생을 알려줌 애플리케이션 시작 life cycle 애플리케이션 종료 life cycle 기타 등등의 life cycle 발생 시 delegate 메소드 실행 UI 의 상태변화를 알려줌 애플리케이션이 포그라운드 상태로 진입해 유저에게 보여지거나 백그라운드 상태로 진입해서 유저에게서 숨겨지거나 여러 가지 UI 이벤트가 존재할 때 delegate 메소드를 실행 위와 같이 AppDelegate 가 UI 와 프로세스의 라..

실제 디바이스가 없을 경우 개발 환경에서 할 수 있는 것과 없는 것을 설명하시오.
ios 면접 질문 2022. 7. 3. 16:18

Xcode의 시뮬레이터 Xcode 의 시뮬레이터를 활용해 개발을 진행하는 경우, 시뮬레이터는 Mac 의 자원을 소비하기 때문에 필연적으로 실제 ios 디바이스보다 성능이 뛰어나다. 또한 실제 기기에서 가지고 있는 각종 하드웨어 센서들을 사용할 수 없다. 지금부터 실제 디바이스가 없는 경우 어떤 것들이 불가능한지 알아보자 하드웨어 가속도 센서, 가압계 센서, 주변광 센서, GPS 센서 기능 사용 불가 실제 디바이스에만 있는 마이크와 카메라 사용 불가 전화기능 사용 불가 API 푸시 알림 받기, 보내기를 지원하지 않음 사진, 연락처, 캘린더에 액세스하기 위해 개인 정보 보호 알림을 지원하지 않음 Handoff 기능을 지원하지 않음 -> 동일한 아이클라우드 계정으로 로그인한 디바이스 간 작업을 이어서 계속할 ..

Notification Center - 옵저버 등록과 제거
IOS 개발일지 2022. 5. 24. 21:18

var observer: NSObjectProtocol? observer = NotificationCenter.default.addObserver(forName: UIApplication.userDidTakeScreenshotNotification, object: nil, queue: nil) { notification in print("user take screenshot!") NotificationCenter.default.removeObserver(observer!) } Notification Center 등록된 옵저버들에게 노티피케이션을 보낼 수 있는 클래스이다. 모든 애플리케이션은 default Notification Center 를 가지고 있다. 노티피케이션을 그룹화하기 위해 새로운 Notif..