Array 에 대해서 설명해주세요.
데이터를 저장하는 자료구조로써 순서를 가집니다. 이 순서는 인덱스 번호를 통해 빠르게 접근가능하며 첫번째가 0번부터 시작합니다. 기본적으로 하나의 배열에, 같은 타입의 데이터끼리만 담을 수 있지만 Any타입을 사용하면 여러 타입을 저장할 수도 있습니다.
let mix2: [Any] = [1, "일", 11.1111]
+ 순서도 없고 중복된 값을 허용하지 않는 컬렉션으로는 Set이 있습니다. 중복 원소를 걸러내야할 경우에 유용하고 저장되는 타입들은 Hashable프로토콜을 준수해야 합니다.
Stack, Queue 차이점에 대해서 설명해주세요.
스택은 후입선출LIFO, 큐는 선입선출FIFO
iOS에서 Stack을 사용하는건 어떤게 있을까요?
iOS에서는 뷰 계층 구조, 네비게이션 컨트롤러의 뷰 컨트롤러 관리, 실행 취소/다시 실행 기능 등에 스택 개념을 사용합니다.
저장 프로퍼티와 연산 프로퍼티에 대해서 설명해주세요.
저장 프로퍼티는 값을 직접 저장하는 프로퍼티고, 연산 프로퍼티는 값을 저장하지 않고 계산한 결과를 반환만 하는 프로퍼티입니다.
lazy 프로퍼티에 대해서 설명해주세요.
처음 사용될 때까지 초기화를 지연시키는 프로퍼티로 메모리 효율성을 높일 수 있습니다. 주로 클래스와 구조체의 프로퍼티로 사용되고 멀티스레드 환경에서 한 번만 초기화됨을 보장합니다.
프로퍼티가 항상 사용되지는 않을 경우, 초기값이 복잡한 계산을 필요로 하는 경우 등에 유용합니다.
예로는 상수+클로저로 ui버튼을 생성하고 클로저 내에서 self로 참조할 때, 강한 순환참조가 발생하지 않도록 self가 완전히 초기화 된 후에 버튼이 생성될 수 있도록 사용됩니다.
Optional에 대해서 설명해주세요.
값이 있을 수도 없을 수도 있음을 나타내는 타입입니다. 예를 들어 문자열 값이 없을 경우(nil)를 대비해 String?처럼 뒤에 물음표를 붙여 표기합니다. 그러므로서 값이 없는 경우를 안전하게 처리할 수 있습니다.
Optional을 사용하는 이유에 대해서 설명해주세요.
위설명 + 값이 없을 수 있는 상황을 명시하고 런타임 오류방지
Optional 언래핑 방법에 대해서 아는만큼 설명해주세요.
강제 언래핑 !, 옵셔널바인딩(if let, guard let), 옵셔널 체이닝 ?. , nil 병합연산자?? 등이 있습니다.
Closure에 대해 설명해 주세요.
코드 블록을 캡쳐하고 전달할 수 있는 익명 함수입니다. 일급 객체로 취급하여 유연한 프로그래밍을 가능하게 합니다
Escpaing Closure에 대해 설명해 주세요.
함수의 실행이 끝난 후에도 실행될 수 있는 클로저를 뜻하는데 주로 비동기 작업에서 사용됩니다. 대표적으로 Network Manager가 escaping closure를 사용하는 예입니다
Extension에 대해 설명해 주세요.
기존 타입에 새로운 기능을 추가하는 기능인데 원본 소스 코드에 접근할 수 없는 타입도 확장할 수 있습니다.
Extension을 사용해보셨나요?
ye. 빈번하게 사용되는 예로, 뷰컨트롤러에서 tableView,CollectionView의 delegate,dataSource 프로토콜을 채택하고 메서드들을 따로 빼서 확장하는 경우가 있겠습니다.
extension에서 저장프로퍼티를 사용할 수 있나요?
익스텐션에서는 새로운 저장 프로퍼티를 추가할 수는 없습니다. 연산 프로퍼티는 추가 가능합니다.