# 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