반응형

면접질문 6

[iOS Interview Questions] UIView 에서 Layer 객체는 무엇이고 어떤 역할을 담당하는지 설명하시오.

UIView의 Layer 프로퍼티는 CALayer(Core Animation 프레임워크에서 제공하는 객체) 타입 객체이며 뷰의 그래픽 처리 및 애니메이션 처리를 합니다. Layer 속성은 항상 CALayer 또는 CALayer 서브 클래스 객체를 반환하기 때문에 nil이 될 수 없습니다. 이때 객체의 실제 클래스는 UIView의 layerClass 클래스 메서드에서 반환되는 값에 따라 결정이 됩니다. 그리고 UIView가 Layer의 delegate 역할을 합니다. UIView는 레이아웃 및 터치 이벤트와 같은 여러 작업들을 수행하지만 직접적으로 화면을 그리거나 애니메이션을 제어하지는 않습니다. UIView는 CALayer 위에 있는 wrapper라고 보면 됩니다. 각각의 UIView에는 하나의 루트 C..

[iOS Interview Questions] 앱 화면의 콘텐츠를 표시하는 로직과 관리를 담당하는 객체를 무엇이라고 하는가?

An object that manages a view hierarchy for your UIKit app. 애플 공식 문서에서 UIViewController를 UIKit 앱에서 뷰 계층을 관리하는 객체라고 설명합니다. 따라서 이 질문의 정답이 되겠습니다! UIViewController 클래스는 모든 뷰 컨트롤러에 공통적으로 공유되는 동작들을 정의합니다. 일반적으로 UIViewController 클래스의 인스턴스를 직접 만들지 않고, UIViewController를 상속해서 뷰 계층을 관리하는데에 필요한 메서드와 프로퍼티를 추가해야 합니다. ViwController의 주요 동작으로는, 일반적으로 데이터의 변화로 인한 화면 컨텐츠 업데이트 앱의 화면과 사용자 간의 상호작용 뷰 크기 조정과 전체 인터페이스의 ..

[iOS Interview Questions] Result 타입에 대해 설명하시오.

@frozen enum Result where Failure : Error Result 타입은 경우에 따른 관련된 값을 포함하여 성공 또는 실패를 나타내는 값이라고 설명하고, enum으로 작성되어 있습니다. 앱 실행 중에 에러가 발생하면 프로그램은 강제로 종료가 됩니다. 컴파일 에러는 문법과 관련 있기 때문에 앱 실행 전에 에러가 발생하고, 런타임 에러는 앱 실행 중에 발생한 에러로 강제 종료 상황이 올 수 있습니다. 하지만 발생 가능한 에러에 대한 처리를 해주면 강제 종료 없이 앱을 계속 실행시킬 수 있어서 개발자는 에러 처리를 위하 코드를 작성해야 합니다. Swift 1.x 최초 버전에서는 Objective-C와 동일한 방법으로 오류 처리를 했습니다. NSError 포인터를 사용했기 때문에 포인터 사..

[iOS Interview Questions] Codable에 대하여 설명하시오.

앱을 만들 때 서버와 통신을 해서 데이터를 주고 받는 경우가 많은데 특히 요즘에는 JSON 형식으로 된 데이터를 주고 받는 경우가 흔합니다. 애플 공식 문서에서 Codable은 “A type that can convert itself into and out of an external representation.” 자신을 변환하거나 외부 표현으로 변환하는 타입이라고 말하는데, 여기서 외부 표현이란 JSON 형식과 같은 데이터 포맷을 말하고, 변환이라는 것은 Encode하거나 Decode하는 것으로 이해하면 됩니다. typealias Codable = Decodable & Encodable Codable은 Decodable과 Encodable이라는 두 프로토콜을 합쳐놓은 형태이므로 class, struct,..

[iOS Interview Questions] Class의 성능을 향상 시킬수 있는 방법들을 나열해보시오.

결론부터 말하면 class에 final 혹은 private 키워드를 붙여서 성능을 향상할 수 있습니다. 접근 제어 위에서 말한 키워드는 Access Control 즉, 접근 제어를 하기 위해 쓰이는 키워드인데요, 다른 소스파일이나 코드에서 어떠한 코드의 전체나 일부에 대한 접근을 제한합니다. 접근을 제한한다는 말은 A 클래스에 선언되어 있는 함수나 변수들 B 클래스에서 사용하게 하거나 못 하게 제어하는 것입니다. 클래스나 구조체, 열거형 자체를 접근 제어하거나 이 안에 선언되어 있는 함수, 변수 등등에 대해서 모두 접근 제어가 가능합니다. 선언 시 앞에 키워드를 붙여서 사용하면 됩니다. public class TestClass { final let testStr: String = "test" privat..

[iOS Interview Questions] Singleton 패턴을 활용하는 경우를 예를 들어 설명하시오.

디자인 패턴이란? 코드를 작성하는 데에 쓰이는 설계 방식, 틀, 구조들이라고 생각하면 될 것 같습니다. 유명한 MVC나 MVVM 같은 디자인 패턴들은 전체적인 코드들을 다루는 큰 틀이라 할 수 있고, 싱글톤 패턴은 이보다는 조금 작은 범위에서 적용하는 디자인 패턴입니다. Singleton 패턴이란? 앱이 시작될 때 어떤 클래스가 최초 한 번 메모리에 할당되고, 1개의 인스턴스만 생성되어 사용하는 패턴입니다. 이 클래스는 다른 곳에서 사용할 때 새로운 인스턴스를 생성해서 새로운 메모리 공간에 할당되는 것이 아닌, 원래 처음 생성했을 때 만들어진 메모리 공간에 다시 참조하게 됩니다. 따라서 하나의 인스턴스만 메모리에 등록됐기 때문에 어느 곳에서든지 이 클래스를 사용할 때 값을 계속해서 공유할 수 있게 됩니다..

반응형