# 9.18 퀴즈 ### 1. iOS에서 앱의 보안을 위한 개념으로 앱의 파일 및 데이터에 대한 독립된 환경을 제공하며, 다른 앱이나 시스템 리소스에 액세스하는 것을 제한하는 것은 무엇인가? (Sandbox) ### 2. Gesture Recognizer를 사용하여 사용자가 특정 동작을 수행하는데 필요한 손거락 수를 정의하고 제한할 수 있는가? (YES) ### 3. 터치 이벤트를 수신한 뷰가 터치를 적중한 후 다른 뷰에 터치 이벤트를 전달하려 한다면 어떤 메서드를 사용해야 하는가? a) sendTouchEvent() b) passTouchEvent() c) hitTest() 정답 d) forwardTouchEvent() ### 4. Escaping closure를 사용할 때 주의해야 할 점으로 옳지 않은 것은? a) 클로저가 함수 밖에서도 실행될 수 있다 b) 클로저 내에서 강한 순한 참조를 방지하기 위해서는 weak self로만 해결할 수 있다. c) 비동기 작업에만 사용되며, 동기 작업에서는 사용하지 않는다. [ 보통은 비동기 작업과 관련하여 사용하지만, 일반 동기 함수 내에서도 쓰일 수 있다.] d) 함수 내부에서만 해당 클로저를 사용해야 한다. ### 5. setNeedLayout(), layoutIfNeeded() 메서드는 언제 주로 사용되나요? A) 레이아웃 업데이트가 필요한 경우 b) 애니메이션을 적용하고 레이아웃을 강제로 업데이트 하는 경우 (정답) C) 사용자가 입력을 처리하는 경우 D) 뷰의 텍스트 내용을 변경하는 경우 ### 6. CoreData에서 데이터 검색을 위해 어떤 클래스나 기능을 사용하나요? a) NSUserDefaults b) NSManagedObject c) NSFetchRequest (정답) d) NSPersistentContainer --- ### 햄지 프로토콜 - 1. 다음의 설명 중 어느 것이 프로토콜의 특징을 올바르게 나타내고 있지 않나요? ```swift protocol MyProtocol { var someProperty: Int { get set } func someMethod() } ``` 1. 프로토콜은 속성과 메서드를 모두 포함하고 있습니다. 2. 프로토콜은 구현된 코드를 가질 수 있습니다. 3. 프로토콜을 채택하는 타입은 클래스, 구조체 형식만 가능합니다. 4. 프로토콜은 다중 상속을 지원합니다. 정답: 1 - 2. 다음의 프로토콜은 어떤 특징을 가지고 있을까요? ```swift protocol MyProtocol: AnyObject {} ``` 1. 클래스와 구조체 모두에서 사용 가능합니다. 2. 클래스에서만 사용 가능합니다. 3. 구조체에서만 사용 가능합니다. 4. 클래스, 구조체, 열거형에서 모두 사용 가능합니다. 정답: 2 - AnyObject 가지고 있기에 클래스에서만 가능하다. 솔리드 1개 단일책임원칙 - 3. 다음 중 어떤 설명이 단일 책임 원칙을 올바르게 나타내고 있나요? 1. 클래스나 모듈은 여러 가지 책임을 가질 수 있다. 2. 클래스나 모듈은 하나의 책임만 가져야 한다. 3. 클래스나 모듈은 많은 책임을 가질 수록 합니다. 4. 클래스나 모듈은 최대한 많은 기능을 포함해야 합니다. 정답 "B" 단일 책임이라서... 솔리드 1개 개방폐쇠원칙 - 4. 다음 개방-폐쇄 원칙(OCP)을 정확하게 설명하는 것을 모두 고르시오. 1. 모든 변경 사항에 대해 열려 있어야 하며, 기존 코드를 자주 수정해야 한다. 2. 기존 코드를 수정하면서 새로운 기능을 추가할 수 있어야 한다 3. 기존 코드를 수정하지 않고 새 기능을 추가함으로써 가능합니다. 4. OCP는 오직 클래스 상속을 통해서만 구현할 수 있다. 정답 "C" 쥬스 메이커때 경험 해봤을껍니다. 값이 추가 되어도 코드 수정이 일어나지 않게 해야하는것 - 5. 다음 중 어떤 메서드가 문자열을 분할하고, 각 부분을 `Substring`의 시퀀스로 반환하는 것일까요? 1. components(separatedBy:) -> String 2. split(separator:) 3. 둘 다 아님 4. 둘 다 맞음 정답 "B" - 6. 다음 중 클로저에 대한 설명으로 올바른 것을 모두 고르세요? 1. 클로저는 항상 이름을 가지며, 이름 없이 정의할 수 없습니다. 2. 클로저는 함수와 동일한 방식으로 매개변수와 반환 타입을 가짐 3. 클로저는 외부 변수를 캡처하고 해당 변수를 변경할 수 있음 4. 클로저는 코드 블록으로서 일회성 작업을 정의할 때 주로 사용 정답은 "B", C" 입니다 --- ### 경민 #### 1. iOS의 파일 시스템 iOS의 파일 시스템 구성요소 중 아래 설명하는 디렉토리는? 임시 파일 및 데이터를 저장하는 디렉터리로, 앱 실행 중에 필요한 임시 작업을 위해 사용됩니다. 앱 종료 시 자동으로 내용이 삭제됩니다. 1. App Container 2. Documents 3. Library 4. tmp - 정답: 4. tmp #### 2. HTTP HTTP 요청 메서드 중 아래에 설명하는 메서드는? "리소스를 서버에 제출하고 해당 리소스를 생성 또는 업데이트 합니다. 주로 데이터를 전송하거나 서버의 상태를 변경하는 데 사용됩니다." - 정답: POST #### 3. 이니셜라이저 super 클래스에서 정의해 둘 경우 sub 클래스가 super 클래스의 이니셜라이져를 상속받지 않는 한 sub클래스에서 반드시 구현해주어야 하는 이니셜라이져는 무엇인가요? 1. Designated Initializer 2. Convenience Initializer 3. Failable Initializer 4. Required Initializer - 정답: 4. Required Initializer #### 4. 고차함수 - 다음 코드는 어떤 결과 값을 출력할까요? ```swift! let numbers = [1,2,3,4,5] let answer = numbers.reduce(0, { $0 + $1 }) print(answer) ``` - 정답 : 15 #### 5. UIApplication 앱의 라이프사이클 관리와 사용자 인터페이스 이벤트 처리 역할을 수행하며, UIResponder 하위 클래스에서 발생한 이벤트를 처리하는 객체는? - 정답 : UIApplication #### 6. UIWindowScene iOS 13 이상에서 멀티 윈도우 지원을 제공하는 핵심 구성 요소인 객체, 앱의 사용자 인터페이스와 하나 이상의 윈도우를 관리하는 객체는? - 정답 : UIWindowScene