본문 바로가기

분류 전체보기326

serial(직렬)과 Concurrent(동시) 저번시간에 queue.async { task } 또는 queue.sync { task } 를 통해 task를 queue로 보냈다 그리고 쌓여 있는 task 들을 다른 스레드로 보내야하는데 GCD 혹은 Operation의 선택은 어떻게 될까 1. 한개의 스레드에 몰아 넣는다 2. 여러개의 스레드에 나눈다 뭐 둘 다 가능 이때, 둘 중 어떤 방식을 선택할건지queue 특성에 따라 결정된다 Serial queue (보통 메인 스레드에서) 분산 처리 시킨 작업을 “다른 한개의 스레드에서” 처리하는 큐 Concurrent Queue (보통 메인 스레드에서) 분산 처리 시킨 작업을 “다른 여러개의 스레드에서” 처리하는 큐 어떤 큐를 사용할 것인지에 대한 핵심 포인트는 바로 작업 순서의 중요도에 있습니다. Seria.. 2022. 1. 17.
Operation Operation GCD는 우리가 Queue에 작업을 보내면 그에 따른 스레드를 적절히 생성해서 분배해주는 첫번째 방법이라고 지난 글에 올렸다. Operation 도 비슷한 기능을 한다. Operation에서 사용하는 queue의 이름은 Operation Queue 이 녀석도 내부적으론 GCD 위에서 동작하지만 몇 가지가 추가된다. 동시에 실행할 수 있는 동작의 최대 수 지정 동작 일시 중지 및 취소 정리하자면 해야하는 작업들은 기본적으로 따로 지정하지 않는 한, 메인스레드에서 처리하게 되어있다. ios에서는 이것을 queue라는 곳으로 보내면 작업들은 그 곳에서 선입선출로 처리 하게 된다. 그래서 이 다수의 일들을 스레드에 분배하는 기술들중의 하나가 - GCD (Grand Central Dispatch.. 2022. 1. 15.
Dispatch GCD는 우리가 Queue에 작업을 보내면 그에 따른 스레드를 적절히 생성해서 분배해주는 첫번째 방법입니다. 그리고 GCD에서 사용하는 queue의 이름이 Dispatch Queue 인거죠! 즉! Dispatch Queue에 작업을 추가하면 GCD는 작업에 맞는 스레드를 자동으로 생성해서 실행하고, 작업이 종료되면 스레드를 제거하게 됩니다. DispatchQueue: iOS에서 동시성 프로그래밍을 돕기 위해 제공하는 queue global: DispatchQueue의 종류 async: 비동기 global dispatch queue에 비동기로 task를 보낸다 2022. 1. 14.
링크에 한글이 있는 경우 한글이 포함된 url string으로 URL 컨버팅을 해줄 경우, nil 값이 반환되는 문제가 발생했다. URL의 string: 은 영문, 숫자와 특정 문자만 인식 가능하고, 한글, 띄어쓰기 등은 인식하지 못한다고 한다. 따라서 한글이 포함되어있는 url String을 따로 인코딩해주는 작업이 필요하다. let urlStr = let encodedStr = urlStr.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed)! let url = URL(string: encodedStr)! 2022. 1. 13.
로그아웃구현 - push와 present 그리고 NotificationCenter, View의 생명주기 지난 두 글에서 비슷하지만 다른 두가지의 뷰를 전환하는 방식을 다루었다. View와 View를 연결하는 방식 https://h1guitar.tistory.com/164 push와 present 안녕하세요 오늘은 앱을 개발하는 과정에서 기본적으로 요구하는 화면전환에 대해서 알아보겠습니다. 기본적으로 화면을 전환하는 방식은 Navigation을 이용해서 Stack처럼 쌓아가는 방식과 그냥 h1guitar.tistory.com present 세로 방향으로 전개되는 View UIViewController의 메소드 실행시키면 기존의 UIViewController 위에 새로운 뷰를 띄운다. 이전 뷰로 돌아가기 위해서는 dismiss push 가로 방향으로 전개되는 View UINavigationController의.. 2022. 1. 12.
울트라러닝 1월 1주 피드백 기존의 세팅 (2021.12월 이전) 1. 하루에 1시간정도 파워타임을 통한 학습 2. 포스팅을 통한 아웃풋 3. 개인 프로젝트를 통해 프레임워크 숙련도 향상 4. 매일 7시간 수면 5. 매일 30분 운동 (조깅) 현재 세팅 (2021.12월 이후) 1. 하루에 9시간의 업무 2. 포스팅과 업무을 통한 아웃풋 3. 매일 7시간 수면 (못 지킨적 많음) 4. 선배들로부터의 피드백 5. 데드라인을 통한 환경설정 기존과 지난 한달의 직접하기의 차이점 1. 내가 주변에서 찾아 볼 수 만 있었던 교육자료들과 전혀 다른 내용들을 배울 수 있었다. 2. 대부분의 시간 + 주말의 시간도 이 프로젝트에 투입되어 이 분야에서 체험하지 못한 임계점돌파를 경험 3. 부족한점들을 깨달았음 (1) 영어실력 - 특히 독해력 (2).. 2022. 1. 11.
autologin btn_box.setBackgroundImage(UIImage(named: "box"), for: .normal) btn_box.setBackgroundImage(UIImage(named: "checkBox"), for: .selected) 1. Button으로 체크박스 흉내내기 안드로이드에서는 따로 CheckBox라는 widget이 제공되어 편리했는데 xcode에서는 checkbox는 없고 button밖에 안보인다.. 찾아보니 button을 커스텀하여 만들어야하는데 stackoverflow에서 조금 간단히 체크박스같은 버튼을 만들 수 있는 방법을 제시했다 (https://stackoverflow.com/questions/41344895/the-best-way-to-use-checkbox-ios-swif.. 2022. 1. 10.
강제업데이트의 로직 강제업데이트와 선택업데이트는 앱이 시작될때 app delegate에서 앱의 API통신으로 버전체크를 하면서 결정된다 API에 담기는 앱의 버전에 대한 정보는 2가지가 담겨있다. 바로 이 앱의 최소 버전과 최신 버전 에 대한 정보다 currentVersion : 현재 기기의 버전 minVersion : 이 앱이 지원하는 최소버전 latestVersion : 이 앱의 최신버전 변수값이 위와 같을 때, 업데이트에는 3가지 루트가 있다 1. 강제업데이트 2. 선택업데이트 3. none 강제업데이트 : 이 기기버전이 지원하는 최소버전보다 낮을 경우 선택업데이트 : 이 기기의 버전이 최소버전이상이고 최신버전보다는 낮을 때, 업데이트 혹은 나중에 업데이트할수있도록 선택하는 경우 none : 아무것도 안하는 경우 코드.. 2022. 1. 8.
Notification Center Notification Center 1. 이 액션이 진행되었으니 담당자들은 처리바람. 2. 담당자 수신 완료, 처리하겠음 1. Post -> 이 액션이 진행되었으니 담당자들은 처리바람 NotificationCenter.default.post(name: .doItSomeThing, object: nil) 포스트 -> name에 해당하는 자들에게 각자 일을 수행하라고 시키는 것 doItSomeThing은 name에 해당(동작하라는 게 아님) name: 일처리하는 스텝의 이름 스탭마다 일거리는 다르다. - 일거리와 이름 세팅하기 @objc func printSomeThing(_ notification: Notification){ print(“do it something”) } 하는 일은 프린트 해주는 것뿐이고.. 2022. 1. 8.
(뷰의 이동) push와 present 안녕하세요 오늘은 앱을 개발하는 과정에서 기본적으로 요구하는 화면전환에 대해서 알아보겠습니다. 기본적으로 화면을 전환하는 방식은 Navigation을 이용해서 Stack처럼 쌓아가는 방식과 그냥 위에 띄우는 Present방식 이렇게 2가지가 있어요 Navigation은 push 으로 화면을 띄우고 Pop으로 제거한다. Present는 Present로 화면을 띄우고 Dismiss로 제거한다. !! Present방식은 뒤로가기가 따로 생기지 않기때문에 개발하면서 직접 만들어줘야한다. https://0urtrees.tistory.com/43 iOS 네비게이션컨트롤러 화면전환 기능 코드구현하기 안녕하세요 민군입니다! ^-^ 저는 최근 부스트코스 에이스 과정에 참여하게 되었는데요. 오늘은 부스트코스 에이스 학습내.. 2022. 1. 6.