본문 바로가기

전체 글

(132)
[Combine] @State, @ObservableObject, @Binding, @Published, @ObservedObject 각각의 역할은? @State @State는 swift5.1부터 추가된 어노테이션이며, 이는 view의 상태값을 참조하여 값이변경될때마다 view상태를 파괴하고 자시 재참조해줌으로써 프로퍼티 값의 상태를 감지해주는 어노테이션입니다. 하지만 토글 유무와같은 한정되는 용도로만 사용되기를 권장하고있는데요 그이유가 뷰안에서 서용하는 메모리공간 때문입니다. 만일 다른클래스로 참조하고싶다면 ObservableObject 프로토콜을 사용하면 손쉽게 사용가능합니다 @Binding @Binding이란 view에 보여질 값을 바인딩하는 State와 비슷하지만 다른점은 여러개의 view가 동시에 State의값을 참조할 수가 있습니다 예를들어 코드로 설명해보겠습니다. Struct TestView: View { @State var name: S..
@escaping closure에 대해서 설명하시오 escaping closure에 대해서 설명해주세요 키워드: 함수를 저장하고 비동기로 실행하기위해 사용, HTTP Request 스크립트: 클로저가 함수의 인자로 전달됐을떄, 함수의 실행이 종료된 후 실행되는 클로저 입니다. 즉, Non-Escaping 클로저는 이와 반대로 함수 실행이 종료되기 전에 실행되는 클로저입니다. func runClosure(closure: () -> Void) { closure() } 기본적으로 위 클로저가 실행되는 순서를 보면 runClosure함수의 closure인자로전달되고 함수안에서 closure가 실행됩니다. 그리고 runClosure함수가 값을 반환하고 종료하죠! 기본적으로 클로저가 함수가 종료되기전에 실행되는 특징이있습니다. 반면 아래의 @escaping클로져 같..
[iOS] Kakao Login APi 구현할때 순서 # trouble shooting 번들 ID가 다를 경우 KOE009에러가 발생한다. -> 그래서 프로젝트 타켓에 있는 Bundle ID를 명확하게 입력해줘야한다. -> 에러해결 # 카카오 로그인 서비스 등록하는 과정 ## 1 초기설정 Kakao login api 검색해서 사이트 접속 -> 내 애플리에키션에서 앱 등록 -> 앱 설정의 플랫폼들어가서 번들 ID에 프로젝트 번들 ID를 넣어준다. 시작하기 > iOS -> api를 다운로드 받는다 (SPM or cocoapod) 네이버갈떄 url사용해서 접속하듯 앱안에서도 특정 앱, 스킴을 지정할 수 있는데 카카오 앱을 열기위해 스킴에 네이티브앱키를 등록한다. - 여기서 잠깐 있는 그대로 사용하면 노출이 될 수 있기에 config파일내에 넣어 서 사용해줄 수 ..
[CS] 중앙처리장치(CPU)의 작동원리에 대해서 설명하세요 # 중앙처리장치(CPU)의 작동원리가 어떻게되나요 ? 🔑 핵심키워드: 주기억장치, 보조기억장치, 제어장치 📋 스크립트: 첫째로, 주기억장치는 입력장치에서 입력받은 데이터 또는 보조기억장치에 저장된 프로그램을 읽어옵니다. 둘째로, CPU는 프로그램을 실행하기 위해 주기억장치에 저장된 프로그램 명령어와 데이터를 읽어와 처리하고 결과를 다시 주기억장치에 저장합니다. 셋째로, 주기억장치는 처리결과를 보조기억장치에 저장하거나 출력장치로 보냅니다. 마지막으로, 제어장치는 1~3과정에서 명령어가 순서대로 실행되도록 각 장치를 제어해주는 역할을 합니다. # 중앙처리장치의 구성요소를 말씀해주세요 🔑 핵심키워드: 크게 연산장치, 제어장치, 레지스터 3가지 📋 스크립트: 크게 연산장치, 제어장치, 레지스터 3가지로 구성이되..
[Architecture] Protocol Oriented Programming과 Object Oriented Programming의 차이점을 설명하시오. Protocol Oriented Programming과 Object Oriented Programming의 차이점을 설명하시오. 🔑 핵심키워드: Object, Protocol, 다형성(Polymorphosm), 상속, 채택, 참조타입, 값타입 📋 스크립트: 1️⃣ OOP(Object Oriented Programming)은 객체지향 프로그래밍입니다. OOP은 다형성을 위해 상속을 통한 overloading, overiding 사용합니다. OOP는 상속을 통해 수직적인 확장할 수 있고, subclass는 superclass를 그대로 상속받아 필요없는 프로퍼티와 메소드를 모두 물려받는다는 단점이 있습니다. 또한 상속을 활용하기 위해선 참조타입인 class를 사용해야만 하고, 다중 상속이 불가능합니다. 이러한..
[iOS] UIWindow의 역할은? # UIWindow 객체의 역할이란? (feat. window) 🔑 핵심키워드: view의 계층 구조의 최상단, 컨테이너 역할, 이벤트 전달, view콘텐츠를 제공하지않고 view를 담는 컨테이너의 역할임 📋 스크립트: 앱의 뷰 계층 구조에서 최상단에 고정되어 있으며 화면 콘텐츠에 대한 컨테이너 역할을 합니다. 뷰와 뷰컨과 함께 동작하여 화면에 표시되는 뷰계층 구조에 터치이벤트를 전달하고, 화면 방향 변경과 같은 변경사항을 관리합니다. UIWindow는 화면에 보이는 콘텐츠를 제공하지않습니다. 이는 View의 역할이구요, 이를 담는 모든 컨텐츠는 앱의 스토리보드에서 구성하는 rooViewController에서 제공합니다. UIWindow의 역할은 UIKit에서 이벤트를 수신하고, 관련된 이벤트를 root..
[Swift] 스위프트 언어의 String에서 subscript를 통해 문자에 접근할 수 없는 이유에 대해 설명해주세요. # 스위프트 언어의 String에서 subscript를 통해 문자에 접근할 수 없는 이유에 대해 설명해주세요. String은 [Int]로 접근하지 못하고String.index로 접근해야한다. 그 이유는 다음과 같다. 하나 이상의 Unicode Scalar가 모여 Character를 이루고 Character가 모여 String을 이룬다! 그런데 Character은 1개 이상의 unicode scalar로 이루어져있어 크기가 가변적이다. 어떠한 유니코드 스칼라를 기준으로 인덱싱을 지원해야하는 지가 애매하기 때문에 subscript로 접근하는 걸 제공하지 않는다. https://velog.io/@haze5959/Swift-Unicode-Scalar-그리고-문자열-count-시간-복잡도-관계 unicode Sc..
[iOS] View Life Cycle (feat. drawing cycle) 호출순서? 1️⃣ View Controller의 View의 상태변화에 따른 메서드의 호출순서를 이야기해보세요. loadView() -> viewDidLoad() -> viewWillAppear() -> viewDidAppear() -> viewWillDisappear() -> viewDidDisappear() 순서로 호출이 됩니다. # 꼬리질문 # 각각의 메서드는 어떤 역할을 가지고 있을까? loadView() controller가 관리하는 view를 만드는 역할 ex) customView를 mainView로 설정할때 이 메소드 안에서 새로운 뷰를 만들어서 뷰 컨트롤러의 메인 뷰로 설정해줘도 된다. 뷰 컨트롤러의 기본 뷰를 커스텀 뷰로 사용하고자 할 때 유용. 스토리보드를 쓰면 어차피 스토리보드에 있는 뷰를 가져와..
[Swift] Result Type이란? Result Type이란 무엇인가 ? Result 타입은 열거형 이며 두 개의 success와 failure를 리턴하는 타입입니다. 이때 Success와 Failure 부분의 제네릭타입인데 Failure 타입은 Error를 상속받은 타입이어야 합니다. Result 타입은 에러를 핸들링 하기 위하여 사용하며 실패시에는 미리 선언해둔 error 타입을 넣어주고 성공시에는 성공한 값의 타입을 넣어 주어야 합니다. result의 타입은 열거형이기 때문에 result 값을 처리 하기 위해서는 success와 failure경우를 나누어서 처리를 해줍니다. @frozen public enum Result { case success(success) case failure(Failure) } # 예상되는 꼬리질문 @Fr..
[iOS] MVVM에 대해 알아보자 (Feat. MVC, MVP) # MVC를 간단하게 짚고 넘어가자 Comment Model 데이터와 관련된 코드를 담고 있다. (데이터를 담아두기 위한 구조체, 네트워크 로직, json파싱 코드 등) View 사용자에게 보여지는 UI를 말함 Controller view와 model간의 상호작용(값변경)을 할 수 있게 Action을 받아서 전달해줌 # 동작방식 사용자 action이 Controller에게 전달됨 action을 확인하고 model을 업데이트함 controller는 업데이트한 model값을 나타내줄 view를 선택함 view는 Model을 이용해 화면에 나타냄 MVC의 문제점 널리사용되고 있는패턴이라 단순하다.(장점) View와 Model사이에 의존성이 생긴다. → 가독성 저하 및 유지보수 not good View와 Mod..