분류 전체보기
-
[Swift] PromiseKit 사용하여 콜백지옥 빠져나오기개발/Swift 2021. 11. 30. 18:10
아래 코드는 프로젝트(item) 를 생성 하기위해 input dialog 를 띄운후 입력값을 받은뒤 중복 체크를 하고 유효성에따라 프로젝트를 생성하는 코드이다. @objc func onTapEdit(_ gesture : UITapGestureRecognizer){ if let topVC = ViewManager.getTopViewController() { NavigationManager.showProjectCreateDialog(topVC) { (text,callBack) in self.projectViewModel.checkProjectName(title: text) { isExist in if(isExist){ callBack(.failure(CreateProjectError.existProjectN..
-
[Swift 코딩테스트] 프로그래머스 - 체육복개발/Swift 2021. 11. 29. 18:50
문제를 해결하기 위해 처음 생각했던것은 1.우선 멀쩡한 놈들을 계산한다. (전체 학생수 - lost 배열 길이) lost 배열을 반복문 돌린후에 2.Lost 배열 앞에번호를 가지고 reserve에 있는지 확인 3.없으면 뒷번호 reserve에 있는지 확인하여 4.있으면 count를 1 증가시키는 방식이었다. 몇가지 테스트에 합격하지 않아 추가적으로 1.주어진 배열두개를 정렬함 2.여벌이있는데 도난당한경우 해당 번호를 두 배열에서 제거함 (여벌도없고 잃어버리지도 않은 상태임) 이 두 로직을 추가하여 해결하였다. import Foundation func solution(_ n:Int, _ lost:[Int], _ reserve:[Int]) -> Int { var reserveList = reserve var..
-
GCD - DispatchQueue Main/Global 큐 스레드에 관해개발/Swift 2021. 11. 23. 18:07
메인스레드에 몰린 일들을 여러 스레드에게 나누어주는것이 동시성 프로그래밍의 이유이다. GCD는 DispatchQueue 에 들어온 작업들에 알맞은 스레드를 생성→ 실행→제거 한다. GCD가 해주니까 우리는 DispatchQueue에 넣어주면 된다는것이다. DispatchQueue 에는 serial (직렬) 큐와 concurrent(병렬) 큐가있다. Serial은 한스레드를 실행하여 전 작업이 끝나고 후작업을 시작하고 Concurrent는 여러 스레드로 작업이 분배되어 순서대로 시작은 하지만 끝나는 시점은 모두 다르다. 지금까지 이해하기로는 Serial은 동기성 Concurrent는 비동기 같은 느낌이다. 하지만 이들은 다르다고한다. Serial + Sync → 작업을 1개 스레드로 보내고 동기로 처리 메..
-
언제 class 대신 struct 를 사용할까?개발/Swift 2021. 11. 14. 16:30
[iOS] Swift Modern Collection View & MVVM 패턴 가이드 강의 | 덤벨로퍼 - 인프런덤벨로퍼 | MVVM 패턴과 Modern Collection View를 사용해 네트워킹을 구현하고, 다양하고 동적인 Collection View를 자유자재로 다룰 수 있게 됩니다., Swift iOS UI, 제대로 다루는 핵심 기술! 📲 iOS Swift 레이www.inflearn.com swift에는 class 와 struct 가 있다. 둘의 차이는 쉽게 크게 이렇다.class 는 상속을 받을수있지만 struct 는 상속이 불가한점class 는 참조 타입이지만 struct는 값 타입인점 참조타입과 값타입에 대해 대표적인 차이점으로두개의 변수에 참조 타입을 할당할때 하나의 변수만 바꿔도 두..
-
메모리 구조 (code,data,stack,heap)개발/프로그래밍 2021. 11. 14. 14:52
메모리는 코드, 데이터, 스택, 힙 으로 구성되어있다. 코드는 개발자 작성한 코드가 바이너리 형태(이진법) 으로 Read-only 로 저장된다. 데이터는 전역변수 와 static 변수가 저장된다. 프로그램 시작과 함께 메모리에 할당되고 프로그램 종료시 소멸된다. 스택은 지역변수/매개변수가 저장된다. 함수호출시 메모리에 할당되고 함수 종료시 소멸된다. 코드 / 데이터 / 스택은 모두 컴파일타임에 메모리 크기가 결정된다. 힙은 클래스 인스턴스나 클로저같은 "참조 타입의 값" 의경우 힙에 할당된다. 따라서 코드,데이터,스택 과 달리 런타임시 메모리 크기가 결정된다. 개발자가 할당/해제 하는 영역이다. 이를 동적 할당이라고하며 매모리 해제를 해주지 않는경우 "메모리 릭" 이 발생한다. swift 는 직접 해제 ..
-
객체지도개발/프로그래밍 2021. 11. 7. 19:57
소프트웨어는 기능과 구조로 구성된다. 기능은 사용자가 필요로 하여 사용하는 것이고 구조는 해당 소프트웨어가 어떻게 구성되는가 이다. 기능을 위주로한 개발과 구조를 위주로한 개발의 차이점은 구조를 위주로 한 개발이 더 새로운 기능에대한 유연한 대처와 범용성 그리고 재사용성이 가능하다는 것이다. 새로운 기능에 대해 고려하지 않는다면 필요한 기능만 잘 돌아가면 되지만 미래에 예측할수 없는 새로운 변화에대해 대처하기 위해서는 구조를 위주로한 개발을 해야한다. 내가 원하는 목적지에 도달하기위해 지나가는 사람에게 길을 물을수도 있지만 지도를 사용해 목적지에 도달할수있다. 지도라는 구조를 사용해 목적지에 도달하는 기능을 수행한다. 길을 묻는것은 하나의 목적지만 갈수있지만 지도라는 구조가 있다면 누구든지 어디에도 갈수..
-
[객체지향의 사실과 오해-2] 역할,책임,협력,책임주도 설계개발/프로그래밍 2021. 10. 30. 17:03
객체지향 설계는 중요하게 책임, 역할, 협력으로 구성된다. 이상한 나라의 앨리스에서 재판을 하는 이야기를 보면 왕이 재판을 주관하여 재판이 진행이되는데 왕이 토끼에게 모자장수(증인)을 부르라 명하고 토끼는 증인을 불러와 증인이 증언을 하는 내용이 있다. 여기서 이 각 객체들은 협력을 통해 재판을 진행한다. 그리고 이 협력은 요청과 응답으로 이루어진다. 1. 누군가 왕에게 재판을 요청한다. 2. 왕이 토끼에게 (모자장수)증인을 불러올것을 요청한다. 3. 토끼는 증인에게 재판에 입장을 요청한다. 4. 증인은 재판 입장에 응답한다. 5. 증인은 왕에게 증언을 응답한다. 여기에서 각 객체가 수행하고 있는 요청과 응답은 각 객체의 책임을 의미한다. 토끼는 증인을 불러올 책임을 가지고있고 증인은 증언을 할 책임이 ..
-
[Swift] 클래스의 init 파헤치기개발/Swift 2021. 10. 18. 17:14
구조체에서 init struct에서 init 메소드를 구현하지않아도 그안의 프로퍼티에따라 init 함수를 사용할수있다. "memberwise initializer" 를 제공하기 떄문이다. struct Car { let brand: String let price : Int } let car = Car(brand:"KIA", price:3000) 클래스의 init 에서는 designated init / convenience init 이렇게 구분된다. 쉽게 designated는 클래스의 찐 init 이고 convenience 는 몇개의 프로퍼티를 init과 다르게 하고싶을때 designated init을 부르고 바꾸는 식이다. class Car : Vehicle { var brand: String var pr..