-
안녕하세요. 그린입니다🟢
이번 포스팅에서는 Swift와 iOS 개발을 하며 몇가지 헷갈렸거나 하는 일부 개념들에 대한 자문자답을 해보겠습니다🧑🏻💻
MVC의 단점을 보안하기 위해 나온 아키텍쳐 패턴? (MVVM)- MVC: 모델 뷰 컨트롤러 각각을 분리하여 의존성을 없애려 했는데 뷰와 컨트롤러에서도 소통을 하는 의존성이 생길 수 있어 재사용성이 낮아지는 문제
- MVP: MVC와 동일한 개념으로 C대신 P 프레젠터로 변경된것으로 결국 MVC와 마찬가지로 뷰/프레젠터 사이 의존성 문제가 나타남
- MVVM: 위 2개 아키텍쳐 패턴의 단점을 극복하고자 나와 이벤트 흐름이 뷰 -> 뷰모델 -> 모델로 이뤄져있어 Command패턴과 Data Binding을 통해 의존성을 제거
타입 캐스팅 및 디이니셜라이저는 클래스의 인스턴스만 가능하다? (O)
- 타입 캐스팅은 인스턴스 타입 확인 및 슈퍼/서브 클래스 타입같이 사용하기 위한 개념- 상속이 불가한 구조체에서는 타입캐스팅이 불가
- 디이니셜라이저는 deinit 키워드를 사용하여 클래스 인스턴스가 메모리에서 해제되는 시점에 대한 호출
- 클래스 인스턴스는 힙에 들어가서 인스턴스가 레퍼런스 카운팅 정보를 가지고 있어 디이닛을 통한 해제가 필요
- 구조체 인스턴스는 사용하지 않으면 바로 스택에서 빠져나오기에 RC 정보가 없어 굳이 디이닛 과정을 거칠 필요가 없음
LLDB의 breakpoint 명령어의 별칭인 b 명령어를 만드는 방법은? (command alias b breakpoint)
- 정규표현식 및 반복해서 사용하는 복잡한 명령어에 대해 많이 줄여 사용- 참고로 등록한 별칭은 빌드가 종료되면 초기화됨으로 계속 쓰고 싶다면 lldbinit 파일에 생성하여 담아야함
- 반대로 command unalias b로 별칭 해제도 가능
그림에서 나오는 소켓통신의 2가지 방법 (TCP / UDP)
- 소켓통신에는 TCP UDP의 방식이 존재
- TCP는 스트림 소켓으로 일대일교환 방식으로 패킷추적관리로 보다 데이터를 안전하게 통신 가능
- UDP는 데이터그램 소켓으로 일대일/일대다/다대다 교환이 가능하며 패킷추적관리가 없어 TCP에 비해 안전하지 않지만 속도가 빠름
- 사진에서도 TCP는 느리지만 안전하고 UDP는 빠르지만 위험
MacOS용 패키지 관리자로 소프트웨어의 쉬운 설치와 업데이트 및 삭제를 관리해주는 시스템은? (Homebrew)
- Vapor는 스위프트 기반의 웹 프레임워크로 Homebrew를 통해 설치 가능
- APT / YUM은 리눅스에서 사용되는 패키지 관리자
지역화를 나타내는 표현으로 알맞은것 (localization / L10N / l10n)
- 약어로 두가지로 대소문자 표현함
Unowned은 참조하는 인스턴스가 메모리에서 해제 될때 ARC가 자동으로 참조 값을 nil로 변경한다 (X)
- 미소유참조로 객체가 사라지면 할당되지 않은 공간을 바라보는 댕글러 포인터가 남음
- 객체가 사라지면 nil로 바뀌는것은 약한참조인 weak
코어데이터는 앱에서 모델 계층을 관리하는데 사용하는 데이터베이스이다. (X)
- DB가 아닌 애플이 제공하는 인메모리 방식의 데이터 관리 프레임워크
- DB 저장소 기능 뿐 아니라 undo,redo,캐싱 등 다양한 기능 사용
타입을 다운캐스팅 해주는 키워드는? (as)
- as는 조건부이기에 다운캐스팅 시 옵셔널을 붙여주어야함 (항상 참일때는 강제추출로)
- 부모클래스타입을 자식클래스 타입으로 다운시켜 캐스팅함- is 키워드는 인스턴스의 타입을 확인
모든 프로세스가 공평하게 실행되는 스케쥴링 방식? (Round-Robin Scheduling)
- RR: 라운드로빈 스케쥴링의 약자로 계속 돌고 돌기때문에 문맥 교환 및 오버헤드가 높게 발생
- FIFO: 먼저 들어온 프로세스부터 처리 선입선출
- SJF: 실행시간이 적은 프로세스 우선적으로 CPU 할당, 평균 대기시간이 가장적지만 무한 대기가 발생될 가능성이 있음
- HRN: SJF를 보안하여 실행 시간 긴 프로세스가 불리한 단점을 보안 대기시간과 실행시간을 이용해 우선순위를 계산하여 순서 부여 (대기/실행)/서비스시간'Swift' 카테고리의 다른 글
패턴 (식별자, 값 바인딩, 튜플) (0) 2021.05.19 와일드카드 패턴 (3) 2021.05.18 Result (0) 2021.04.28 Closure 심화 (0) 2021.04.27 소켓통신 (0) 2021.04.19