TIL(Today I Learned)

4월 22일(목)

학습내용

  • 솔이 퀴즈
    • 클로저와 클래스 인스턴스는 Heap에 할당된다.
    • 실행중인 app을 foreground에서 background로 이동시, applicationWillResignActive → applicationDidEnterBackground 순으로 메소드가 호출된다.
    • UITableView는 cell뿐만 아니라 HeaderView, FooterView도 재사용이 가능하다.
    • UICollectionViewFlowLayout은 layout 전체적인 수치(아이템 크기, 간격 등)를 정할때 사용한다. 그리고UICollectionViewDelegateFlowLayout은 collectionview의 어떤 특정 아이템의 수치(크기와 간격)을 정하기 위한 프로토콜이다.
    • UITableViewCell에서 accessoryView의 영역은 contentView에 포함되지 않는다.
    • 뷰를 회전시키면 frame은 뷰의 전체 영역을 감싸는 사각형의 좌표로 바뀌지만, bounds는 변하지 않는다.
    • LLDB formatter를 사용하지 않는 LLDB 명령어는 po이다.
    • 접근토큰의 수명이 끝난 후 사용자의 인증절차 없이 소비자가 서비스제공자로부터 접근토큰을 재발급받을 수 있게 하는 토큰은 refresh token이다.
  • 오글 퀴즈
    • SceneDelegate.swift가 없어도 앱은 동작할 수 있다.
    • HTTPS는 HTTP 프로토콜에서 SSL 프로토콜을 사용하여 세션 데이터를 암호화한다.
    • CPU에서 실행되고 있는 프로그램이 프로세스이다.
    • UIScene은 UIView를 상속받지 않고 UIResponder만 상속한다.
    • UIViewController는 NSObject를 상속받는다.
    • Responder 객체가 Event를 핸들링 할때, UITextField, UIViewController, UIWindow, UIApplicationDelegate 순으로 이벤트가 전달된다.
    • 특정 뷰를 언어권에 상관없이 왼쪽에 고정시키려면 leftAnchor를 사용하여 레이아웃을 설장한다.
    • OCP - 개방폐쇄 원칙, ISP - 인터페이스 분리 원칙 , LSP - 리스코프 치환 원칙, SRP - 단일 책임 원칙, DIP - 의존관계 역전 원칙.
    • NSCache는 Memory cache이다.
    • git commit —amend -m 를 입력하면 가장 최근 커밋의 메세지를 수정할 수 있다.
    • git reset 명령어를 사용하면 커밋 이력만 삭제되고 Working Directory는 그대로 유지된다.
    • Swift의 기본 데이터 타입은 모두 struct로 구성되어 있다. (Cocoa touch framework는 보통 class로 구성되어있다.)
  • Xcode Help
    • Jump Bar의 검색기능을 통해 해당 코드로 이동할 수 있다.
    • static analyzer가potential flaws (보라색표시)를 알려준다. (항상 정확한 것은 아니다.)
    • scheme은 프로젝트 빌드를 위한 target, build configuration, 실행 환경 등에 대한 설정 모음이다.
    • target은 빌드를 위한 product를 상세한 것이다.
    • Build Configuration을 Debug, Release로 설정할 수 있다. assert함수는 Debug모드일때만 작동한다.
    • Code Signing
      • 앱을 최초에 누가 서명을 했는지 확인하고, 서명 이후에 앱이 변질되지 않았음을 확인하기 위한 절차.
      • Team
        • 애플에서 승인한 개발자 팀 정보
      • Bundle Identifier
        • 시스템에서 앱을 구분하기 위한 ID.
      • Provisionig Profile
        • Provisioning profile은 기기와 개발자를 이어주는 역할을 한다. 애플에게 앱에 대한 승인을 받기 전에 앱을 테스트하려는 기기의 정보를 포함하고 있다. App ID, Development Certificate, Device ID를 포함하고 있다.
      • Signing Certificate
        • 앱을 signing 하기위해 애플에서 발행하는 인증서. public key와 private key를 포함한다.

문제점/고민한점

  1. Targets vs Scheme
  2. Frame vs Bounds
  3. Bundle 이란?
  4. Product 란?

해결방법

  1. Targets vs Scheme
    • target은 product 자체에 대한 build 세팅이고, scheme은 실행 환경에 대한 설정값 들이다. 보통 scheme은 디버깅할때 사용된다고 생각하면 된다.
  2. Frame vs Bounds
    • Frame은 상위뷰의 좌표시스템에서 View의 위치와 크기를 나타내는 사각형, Bounds는 자신만의 좌표시스템 내에서 위치와 크기를 나타내는 사각형이다.
  3. Bundle 이란?
    • 번들은 실행가능한 코드와 관련 리소스(이미지, 사운드 등)을 한 공간에 묶는 파일시스템에 있는 디렉토리이다
  4. Product 란?
    • 빌드된 결과물.

참고