---
# System prepended metadata

title: "\U0001F4D6 활동 학습 퀴즈(10.16)"

---

hoon

### 2. 보이스오버 기능을 통해 읽어줄 수 있는 accessibility의 property를 모두 고르세요
1. label
2. hint
3. value
4. type

정답: a, c, d
    
### 3. JSON의 값을 표현하는 문법적 요소로 알맞게 짝지어진 것을 모두 고르세요
1. Object: { }
2. Array: [ ]
3. String: “ ”
4. 없음: nil

정답: a, b, c
    
### 5. 다음 코드에는 문제가 있을까요?
```swift
func 커리어캠프(completion: @escaping (() -> ())?) {
    completion?()
}
```

1. true
2. false

정답: 2

![](https://hackmd.io/_uploads/Sk9dXgKZ6.png)

    
### 6. 다음에서 설명하는 클래스는?
    
```swift
소켓, 파일, 키보드 마우스 등의 입력 소스를 처리하는 이벤트 처리 객체로,
쓰레드가 일해야 할 때는 일하고, 일이 없으면 쉬도록 하는 목적으로 고안되었다.
Timer의 이벤트 또한 처리한다.
```

정답: RunLoop
    
### 7. 클래스, 구조체, 열거형에서 시퀀스의 멤버 요소에 접근하기 위한 바로가기 첨자 방식

정답: Subscripts / Subscript / 서브스크립트

--------
idinaloq

### 1. 클래스에 인스턴스가 하나만 있도록 하면서 이 인스턴스에 대한 전역 접근 지점을 제공하는 생성 디자인 패턴의 이름은?
- 답: singleton

### 2. 행동 디자인 패턴의 한 종류로, 여러 객체에 자신이 관찰 중인 모든 이벤트에 대하여 알리는 구독 메커니즘을 정의할 수 있도록 하는 패턴의 이름은?
- 답: observer

### 3. 기존에 선언되어있는 타입에 새로운 별칭(별명)을 사용할 수 있도록 하는 키워드는?
- 답: typealias

<!-- 4. 타입 캐스팅은 클래스의 인스턴스를 부모 클래스 타입으로 변경하는 것만 가능하다 (O/X)
- 답: X 
- 클래스의 인스턴스를 부모클래스(업캐스팅), 자식클래스(다운캐스팅)로 변경하는 것이 둘 다 가능하다 -->

### 5. 구조체와 클래스 모두 멤버와이즈 이니셜라이저를 자동으로 제공한다(O/X)
- 답: X
- 구조체만 기본적으로 자동 제공한다.
- 클래스는 명시적으로 초기화 메서드를 만들어야 한다.

### 6. 오토레이아웃에서 우선순위가 높을수록 (A)는 주어진 크기보다 작아질 수 있고, (B)는 주어진 크기보다 커질 수 있다. (A)와 (B)의 이름으로 알맞은 것은?
- a)
    (A): Content hugging
    (B): Content resistance
    
- b)
    (A): Content hugging
    (B): Compression resistance
    
- c)
    (A): Compression hugging
    (B): Content resistance  
    
- d)
    (A): Compression hugging
    (B): Compression resistance

- 답: (b) 

### 7. TableViewCell에서 해당 셀이 재사용되기 전에 셀의 상태를 초기화 하거나, 데이터를 재설정할 수 있는 이 메서드의 이름은?

- 답: prepareForReuse

--------
Erick

## 퀴즈

### 다른 함수를 전달인자로 받거나 함수실행의 결과를 함수로 반환할 수 있는 함수란?

정답: 고차함수

### Core Data에서 Managed Object Context가 수행하는 역할을 고르세요!

1. 데이터를 저장소에 저장
2. 데이터 모델을 정의
3. 데이터를 관리하고 업데이트
4. 데이터를 백업

정답: 3

### Core Data의 Store Type을 설정하면 데이터를 메모리에만 저장할 수 있다.

정답: o
해설: Store Type을 InMemory로 설정하면 메모리에만 저장할 수 있음

### ios File System에서 외부로 부터 받아온 파일을 저장하는 경로는?

1. Document
2. Library
3. Caches
4. Tmp

정답: 1

### NSCache는 메모리 캐싱과 디스크 캐싱을 모두 지원한다.

정답: x
해설: NSCache는 메모리 캐싱만 지원

### 다음 메서드 중 재정의 시 super를 호출해야되는 메서드를 모두 고르시오

1. viewDidLoad
2. viewWillAppear
3. loadView
4. prepareForReuse

정답: 1, 2, 4

### 다음 코드를 설명하는 것 중 맞는 것을 모두 고르시오 (Object1과 Object2의 내부구현은 모두 같습니다.)

```swift
struct Object1<Item: SomeProtocol> {
    
    var item: Item
    // ...
}

struct Object2 {
    
    var item: SomeProtocol
    // ...
}
```

1. Object1의 인스턴스를 생성했을때 item에는 SomeProtocol을 채택한 모든 타입이 올 수 있다
2. Object2의 인스턴스를 생성했을때 item에는 SomeProtocol을 채택한 모든 타입이 올 수 있다
3. Object1이 Object2보다 성능상 이점이 있다
4. Object2가 Object1보다 성능상 이점이 있다

정답: 2, 3
해설: 월요일 활동학습에서 배우면 됩니당ㅎㅎ

**프로토콜 타입**
프로토콜을 채택한 타입은 Existential Container에 저장됨
pwt(protocol witness table)를 이용해서 런타임에서 메서드를 찾아가는 과정이 생겨 다이나믹 메서드 디스패치 방식으로 성능이 떨어짐

**제네릭**
제네릭을 사용하면 구체화(specialization)을 거치며 구체적인 타입을 인자로 전달받아 Existential Container를 사용할 필요가 없음
즉 다이나믹 디스패치나 힙에 저장되는 상황이 발생하지 않음

하지만 구체화를 거치며 SomeProtocol을 채택한 타입 중 특정 타입만을 사용할 수 있음