ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 개념 자문자답
    Swift 2021. 4. 29. 11:28

    안녕하세요. 그린입니다🟢

    이번 포스팅에서는 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
Designed by Tistory.