Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Swift 정리(1) #154

Open
Taehyeon-Kim opened this issue Nov 28, 2022 · 2 comments
Open

Swift 정리(1) #154

Taehyeon-Kim opened this issue Nov 28, 2022 · 2 comments
Labels

Comments

@Taehyeon-Kim
Copy link
Owner

Taehyeon-Kim commented Nov 28, 2022

변수와 함수

변수 -> 프로퍼티
함수 -> 메서드

명칭

  • https://enterkey.tistory.com/165
  • 클래스, 구조체, 열거형(특정 범위 내, 특정 객체) 안에서 쓰이는 것들을 프로퍼티, 메서드라고 부를 수 있다.
  • 함수 내에서 확인해본다면 프로퍼티보다는 변수라고 볼 수 있다.

변수

  • 컬렉션 타입의 종류와 특징은 무엇인가?

왜 컬렉션 타입인가(정의)

  • 컬렉션 타입의 자체의 특성
  • 어떤 프로토콜을 채택하고 있는가, 어떤 기능을 하고 있는가
  • Collection 프로토콜을 채택하고 있는 묶음 -> Collection 프로토콜은 무엇인가 -> Iterator, Sequence
  • Copy on Write
    • 처음에는 복사하지 않고, 값이 변경되거나 수정되면 값을 복사되는 것
    • 같은 데이터를 갖는 주소값을 공유하는 것

종류와 특징

  • 배열, 딕셔너리, 집합

Foundation, UIKit

  • Int, String은 왜 Struct이지? -> Foundation / -> Class라면 Element 하나하나에 대한 추적이 어렵다
  • UIKit은 왜 Class 기반이지? -> 이 사람들은 왜 그렇게 만들었나

Foundation

데이터와 연관되어 있는 대부분의 녀석들, 근간이 되는 프레임워크

  • String, Int 등의 데이터 타입
  • Date
  • Network 객체들(URLSession)
  • FileManager

옵셔널

옵셔널에 대해 아는대로 설명하시오.

  • 구조부터 시작하자. -> 사용방법은 그 이후다.
  • 옵셔널은 열거형으로 이루어져있다.
  • 열거형은 제네릭형태로 이루어져있다.
  • case는 2가지로 정해져있다. 값이 있을수도 있고, 없을 수도 있음을 나타낼 수 있다.
  • 옵셔널로 인해 런타임 이슈가 발생할 수 있다.
    • 런타임 이슈를 발생하지 않도록 하기 위해, 옵셔널 바인딩/옵셔널 체이닝/언래핑(묵시적 해제/강제 해제) 등등의 방법을 사용할 수 있다.
    • 체이닝 : 점근법으로 하위 속성으로 들어갈 때 옵셔널을 판단해주는 방식, 체이닝 역시 !/?를 사용할 수 있다. ! 는 강제해제와 같은 방식으로 동작해서 런타임에러가 발생할 수 있습니다.
    • 바인딩 : guard - let, if - let -> 목적은 언래핑, Swift 5.7에서 문법 구조가 변경됨.
  • 열거형은 컴파일 타임에 이슈를 잡을 수 있다.

컴파일, 런타임 이슈

  • 컴파일 타임과 런타임 타임을 설명해보시오.

열거형

  • 컴파일 시점에 모두 대응이 가능 -> 그렇기 때문에 인스턴스를 만들필요가 없음
  • 인스턴스 생성 x
  • 메모리에 이미 다 올라감
  • 멤버와 값을 분리 -> 우리는 일반적으로 프로퍼티와 메서드, 즉 객체 안에 들어있는 것들을 멤버라고 부른다. case 역시 열거형 안에 들어있는 것이기 때문에 멤버라고 부른다.
  • case(-멤버), 원시값(rawValue), 연관값(associateValue)
  • case로 대응하기 어려운 값들이 있으니 연관값을 사용한다.
  • 어트리뷰트 키워드(@Frozen, @unknown) -> 컴파일과 관련
  • CaseIterable
@Taehyeon-Kim
Copy link
Owner Author

Taehyeon-Kim commented Nov 28, 2022

ViewController

  • NSObject
  • UIResponder - UIApplication/UIView/UIViewController

UIViewController LifeCycle

  • loadView > SuperView 호출 x
  • 네비게이션, 탭바, 루트뷰
  • 화면 전환, FullScreen, PageSheet
  • 메모리 관점도 확인

UIApplication LifeCycle

  • Background, Foreground 전환 시에 어떤 제약사항이 있나요?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant