본문 바로가기

Swift/면접

(5)
[iOS 면접] 모든 View Controller 객체의 상위 클래스는 무엇이고 그 역할은 무엇인가? 모든 ViewController의 상위 클래스는 UIViewController입니다. UIViewController는 뷰를 업데이트하거나 이벤트 처리, 다른 ViewController를 포함한 다른 객체 조정(화면 이동)을 수행하기도 합니다. UIViewController의 상위 클래스가 하나 더 있는데 UIResponder입니다. UIResponder는 이벤트에 응답하고 이벤트를 처리하는 역할을 하는 인터페이스입니다. 이벤트가 발생하면 UIKit은 이벤트를 Responder에게 전달하고 Responder는 이벤트를 처리합니다. 반대로 UIViewController를 상속 받는 Container View Controller UINavigationController UISplitViewController ..
[iOS 면접] Optional 이란 무엇인지 설명하시오. Optional 이란? swift 코드에 안전성을 높여주는 것이 Optional입니다. ?를 사용해서 변수의 값이 nil일 수 있다고 알려주는 것입니다. 언제 사용할까? 주로 swift에서는 nil 값인 경우 강제 실행(!)을 하게 되면 앱이 멈춰 버립니다. 때문에 nil값이 들은 경우를 예외처리하거나 안전하게 처리할 때 많이 사용합니다. Optional을 사용하면 뭐가 좋을까? 위에서 말했듯이 nil이 발견되면 터지기 때문에 Optional을 사용해서 nil로 인한 문제를 해결할 수 있습니다. Optional Unwrapping은 무엇일까? Optional Unwrapping은 옵셔널 해제라는 뜻을 가지고 있습니다. 즉 Optional Unwrappingsm는 Optional 변수의 Optional을 ..
[iOS 면접] ViewController의 생명주기를 설명하시오. init viewController 객체가 생성됩니다. loadView View를 메모리에 로드합니다. viewDidLoad 뷰가 로드되었다! 뷰가 컨트롤러가 메모리에 로드되고 난 후 호출 (리소스 초기화 또는 화면이 처음 만들어질 때, 처음 한 번만 실행해야 하는 초기화코드의 경우 사용) viewWillAppear 뷰가 나타날 것이다. 뷰가 나타나기 직전 호출 (다른 뷰를 갔다가 다시 돌아오는 상황에 사용) (viewController가 화면에 나타날 때마다 반복 실행) viewDidAppear 뷰가 나타났다. view가 화면에 나타난 직후에 실행 (뷰가 화면에 나타난 직후를 빼면 viewDidAppear와 viewWillAppear는 거의 같다) (뷰가 화면에 나타난 즉시 발생하는 이벤트를 작업할 때..
[iOS 면접]스토리보드를 이용했을때의 장단점을 설명하시오. 장점 앱의 흐름을 직관적으로 볼 수 있음 코드를 잘 못 짜더라도 UI를 쉽게 구현할 수 있음 view의 초기화가 필요 없기 때문에 view를 만드는데 오래 걸리지 않음 앱의 Flow Chart를 파악하기 쉬움 단점 충돌을 해결하기 어려움 스토리보드에 많은 컴포넌트가 있으면 로딩시간이 오래 걸림 뷰의 재사용성이 너무 떨어짐 스토리보드의 identifier를 항상 지정해야해서 번거로울 수 있음 스토리보드는 XML이기 때문에 협업 시에 merge Conflict가 발생하고, 해결하기 힘들다. 깃 충돌 방지를 위해서 view 하나 스토리보드 하나를 사용하면 Flow Chart 파악이라는 장점이 없어집니다. PR에 수정한 view를 자세히 쓰지 않으면 어떤게 변한 지 보기가 힘듭니다. 처음에 키게되면 로딩 시간도..
[iOS 면접]실제 디바이스가 없을 경우 개발 환경에서 할 수 있는 것과 없는 것을 설명하시오. 하드웨어 가속도 센서 가압계 센터, GPS 센서를 이용할 수 없습니다. 카메라를 사용할 수 없습니다. 마이크를 지원하지 않습니다. 전화기능을 사용할 수 없습니다. API Apple의 푸시 알림을 받거나 보낼 수 없습니다. 개인정보 보호 알림을 지원하지 않습니다. Handoff 기능을 지원하지 않습니다. MessageUI 기능을 지원하지 않습니다. 그 외 맥북 성능이 아이폰 성능보다 뛰어나기 때문에 CPU나 메모리 부담이 얼마나 되는지 알 수 없습니다. 네트워크 속도를 테스트할 수 없습니다. 페이스아이디는 얼굴인식은 되지 않지만 실행여부는 알 수 있습니다.