일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- CoreLocation
- android
- format형식
- autolayout
- pod install
- SWIFT
- Appearance변경
- ios15
- cocoapods
- ViewModifier
- 백준
- ios
- kakaomap
- programmers
- segue
- UIStackView
- Java
- UserDefaults
- snapkit
- EventKit
- alamofire
- NotificationCenter
- SwiftUI_Preview_Provider
- image
- MapKit
- Kotlin
- 코딩테스트
- Alert
- swiftUI
- AsyncImage
- Today
- Total
목록IOS/Swift (7)
감자주먹밥
대부분 Json을 사용하기 때문에 XML을 사용할 일이 없었는데, OpenAPI를 하나 사용하다 보니 무조건 XML로만 데이터가 넘어와 XML을 파싱하는 법을 알아보고 적용해봤다. XMLParser Foundation에 기본으로 들어가 있는 XMLParser를 사용해 XML을 파싱할 수 있는데, Json과 달리 태그와 값으로 이루워진 XML특성상 사용을 위한 Delegate를 설정해줄 필요가 있다. 먼저 초기화는 간단하다. let parser = XMLParser(data: data) parser.delegate = subjectParser.self parser.parse() Data 타입의 XML을 XMLParser의 초기화 파라미터로 받을 수 있고, URL도 초기화시 받을 수 있는데, URL은 테스트..
비동기 작업을 하면서 발생할 수 있는 문제는 Data race 이 있다. Swift Concurrency는 이를 방지하기 위해 컴파일 단에서 오류를 내는 식으로 이를 방지하는데, Data race를 피하면서 여러 task가 하나의 자원을 공유하면서 쓰려면 어떻게 해야할까? GCD에서도 알아봤지만, data race는 여러 스레드가 하나의 자원에 동시에 접근할 때 발생할 수 있다. 읽기만 하면 문제는 없지만, 값을 변경하려고 할 때 중간에 생각했던 값이 아닌 바뀐값이 나올 수 있기 때문이다. Mutex, Semaphore를 사용해서 한번에 하나씩만 접근할 수 있게해 해결할 수 있는데, Swift Concurrency의 Actor도 한 번에 하나의 Task만 접근할 수 있게 하여 data race를 해결 할..
Task Asynchronous Function을 생성하고 실행하려 할 때 viewDidLoad나 일반적인 함수에서는 실행이 되지 않는 것을 알 수 있다. 그 이유는 Asynchronous Function은 항상 concurrent context에서 실행되어야 하기 때문이다. 이를 실행하려면 Task를 사용하면 된다. Task는 프로그램 일부를 비동기적으로 실행할 수 있는 작업 단위다. Task를 사용하면 임의의 스레드에서 다른 실행 맥락과 함께 동시에 실행된다. 그리고 각 Task는 다른 Task와 동시에 실행할 수 있다. task가 여러개 만들어 지면 task들은 각각 독립적으로 작업을 수행한다. Task Block은 비동기로 실행된다. Task block의 작업은 await를 만나 중단될 수는 있지..
WWDC 2021에서 Swift Concurrency에 대한 소개가 있다. GCD, Operation을 사용해서 비동기 작업을 수행하거나 URLSession에 complationHandler로 작업 종료 후 처리를 했는데 Swift Concurrency를 사용하면 어떤 장점이 있고, 어떻게 더 쉽고 간편하게 처리 할 수 있는지 알아보고 직접 사용해봤다. Swift Concurrency의 장점 가독성 completionHandler 콜백을 사용하지 않아 가독성이 좋아진다. 에러 핸들링 안정성 종료되는 시점에 completionHandler를 빼먹었을 때 컴파일시 문제는 없지만 에러처리가 불가능. Swift Concurrency를 사용하면 이런 에러처리를 빼먹는 실수를 방지할 수 있다. 동기화 처리 비동기 ..
동시성 프로그래밍 (Concurrency Programming) - 야곰닷넷 동시성 프로그래밍 동시성 프로그래밍(Concurrency Programming) 코스에 오신 것을 환영합니다! 이번 코스는 동시성 프로그래밍에 대한 이해를 […] yagom.net 야곰사이트의 동시성 프로그래밍을 수강하고 정리 한 글. 동시성 프로그래밍이란? 하나의 CPU가 여러 작업을 동시에 처리하는 것. 싱글코어에서도 가능한 논리적인 개념. 여러개의 스레드를 이용하여 동시에 여러 작업을 처리한다. 실제로는 여러 작업을 나열해두고 하나씩 번갈아가며 작업을 처리하는데, 속도가 매우 빨라 동시에 작업을 처리하는 것처럼 보여진다. 아주 빠르게 Context Switching을 하는 것. 병렬 프로그래밍과 차이점 병렬 프로그래밍은 C..
사용하면서 단축키 알아내면 추가하기 XCode 디버깅 F6 : 다음 라인 ( Step Over ) F7 : 현재 라인 내부 진입 ( Step Into ) F8 : 현재 함수에서 나가기 ( Step Out ) 커맨드 + Shift + K : 프로젝트 클린 커맨드 + B : 프로젝트 빌드 커맨드 + R : 프로젝트 실행 커맨드 + I : 프로젝트 프로파일링 빌드 커맨드 + . : 실행중인 앱 강제 종료 커맨드 + , : XCode 프로퍼티창 열기 커맨드 + Shift + O : 프로젝트 내 파일 / 클래스 / 함수 검색 ( 매우 유용 ) 커맨드 + Shift + F : 파인드 창으로 캐럿 강제 이동 커맨드 + F : 현재 창 검색 커맨드 + E : 현재 선택된 텍스트 블럭을 모든 텍스트에디트에 복사 커맨드 ..
입력 readLine() var input = readLine()! //String 으로 들어온다. var input = readLine()!.split(separator: " ").map {Int($0)!} //공백있는 숫자 나눠서 받을 때 강제 언래핑 해주는 것은 readLine의 타입이 Optional이 붙은 문자열이기 때문이다. 공백이 들어올 수 도 있으니깐! 진법 변환 n진수를 10진수로 변환 let binary = "111" // let decimal = Int(binary, radix: 2)! // radix가 현제 진법을 나타낸다. 10진수를 n진수로 변환 let decimal = 5 let binary = String(decimal, radix: 2) //uppercase를 true로 해..