개발
-
[Swift] Dynamic Dispatch / Static Dispatch개발/Swift 2021. 12. 20. 17:03
ios 면접 질문 리스트를 보던중 이런 문제를 보았다. class B: A 일 때 A와 B 둘다 func one()이라는 함수가 있으면 B 인스턴스나 A 인스턴스에서 이 함수를 호출했을때 둘 중 어떤 함수를 호출할지 어떻게 판단하는가? B는 자식 클래스, A는 부모 클래스이다 B와 A 모두 one()함수를 정의했다면 B(인스턴스).one()을 호출하면 B의 함수를 A.one()을 호출하면 A의 함수를 호출할것이다. 그러면 만약 자식 클래스인 B가 상속을 받지 않았다면? one 함수를 오버라이딩 하지 않았다면? 어떻게 어떤 함수를 쓸지 결정할수 있을까? 이게 가능한 것은 어떤 함수를 호출할지 컴파일 단계에서 결정짓지 않아서 가능하다. let instanceA = A() instanceA.one() //결정..
-
[Swift] frame이 다시 초기화 되는 오류 - translatesAutoresizingMaskIntoConstraints개발/Swift 2021. 12. 8. 17:43
요구사항 UI 의 사이즈가 isExpaned 상태에 따라 커졌다 작아져야함 Error showTwoButtonDialog를 실행하여 팝업을 띄우는경우 UI의 사이즈가 초기화 되어 isExpanded 상태와 반대가 되어버려 UI 오류가 발생함 1. 사이즈 변경 버튼 -> 모듈맵 커짐 - isExpaned = true 2. showPopup -> 모듈맵 보통 크기로 돌아옴 - isExpanded = true 3. 사이즈 변경 버튼 -> 모듈맵 작아짐 - isExpanded = false uiview 의 사이즈를 변경하는 함수 private func expandModuleMap(){ let currentFrame = self.moduleMapView.frame let newFrame = self.codingV..
-
[Swift] UIResponder 대략 알아가기개발/Swift 2021. 12. 1. 18:04
uiresponder 는 앱 이벤트 처리 백본을 구성한다? 무슨말인지 모르겠고 일단 이벤트에 대한 응답 처리를 위한 클래스임 UIApplication UIViewcontroller UIView 는 모두 리스폰더인데 (상위 클래스가 UIResponder임) 이벤트가 발생하면 앱의 리스폰더 객체에 전달함 (vc , view에 전달함) 터치, 모션 원격 등 이벤트를 처리하려면 리스폰더(vc,view) 가 해당 메소드를 오버라이드 하면댐 touchesBegan(_:with:) 등등... 만약 주어진 리스폰더가 이벤트를 처리하지 않는 경우 리스폰더 체인의 다음 이벤트로 해당 이벤트를 전달한다 → 앱이 이벤트를 받으면 그 이벤트를 처리할 대상을 찾으려고 계속 전달 과정을 거침 → 리스폰더가 처리 하지 않으면 (리스..
-
[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 는 직접 해제 ..