본문 바로가기

ios8

How to show <private> in os_log Problem this will display Some string: os_log(logger, "Some string: %s", "text that will display ") Solve In order for the text to display as expected, it would need to be declared with the public tag: os_log(logger, "Some string: %{public}s", "text that will display as expected") 2022. 5. 10.
iOS 라이브러리 배포하는 법 - CocoaPods, SPM, Carthage iOS 라이브러리를 CocoaPods, SPM, Carthage에 배포하는 법을 알아보겠습니다. 예제 깃허브 : https://github.com/Goeun1001/GEAudioPlayer ---- 목차 ---- 1. 프로젝트 생성 2. SPM 배포 3. CocoaPods 배포 4. Carthage 배포 1. 프로젝트 생성 pod lib create로 생성하는 방법도 있지만 저는 Swift Package로 생성하겠습니다. 입력한 패키지의 이름으로 Package.swift가 구성되고 Sources와 Tests 폴더가 생깁니다. Sources에 본인의 라이브러리 소스 코드를 넣고, Tests에 테스트코드를 넣으면 됩니다. 2. SPM 배포 SPM에 배포하기 위해서는 Package.swift를 잘 설정해야 합.. 2022. 3. 7.
GCD에서 의도치 않은 교착상태를 피하는 법 print("hi \(Thread.current)") // 1 DispatchQueue.global().sync { print("hi \(Thread.current)") // 2 } DispatchQueue.global().async { print("hi \(Thread.current)") // 3 } // 1 - hi {number = 1, name = main} // 2 - hi {number = 1, name = main} // 3 - hi {number = 4, name = (null)} 1번 부분을 보면 메인 스레드에서 실행되고 있음을 알 수 있습니다. 원래 특별한 설정 없는 모든 코드는 메인스레드 위에서 돌아갑니다. 그럼 2번 부분은 왜 메인 스레드에서 처리될까요? 논리적으로는 메인 스레드를 .. 2021. 12. 22.
DispatchQueue 교착상태 Deadlock(교착상태)는 깜직하게도 EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)라는 오류를 만들어 앱을 터트립니다. 교착상태를 막아야겠죠? 이런 교착상태가 일어나는 상황을 직렬 큐일 때, 동시 큐일 때로 나누어보면, 1. Serial(직렬) Queue - async 속 sync DispatchQueue.main.async { // main queue == serial DispatchQueue.main.sync { // 교착상황!! } } 해결법 : 다른 큐에서 async로 사용하세요. sync로 하면 교착상태가 또 나니까 주의하세유 -> 참조 : https://gogo-ios.tistory.com/46 DispatchQueue.global().as.. 2021. 12. 22.
DispatchQueue 종류 세 가지 1. Main Queue 2. Global Queue 3. Custom Queue * 디스패치큐는 큐의 특성에 맞게 큐가 알아서 스레드에 자기 task를 분배합니다. 프로그래머는 그저 task를 큐에 넣어주면 됩니다. 1. Main Queue - Serial(직렬) 큐 - 딱 한 개의 큐 - 스레드는 메인스레드 딱 한 개만! (UI 업데이트 처리) 메인 큐는 스레드가 하나밖에 없기 때문에 Serial Queue가 되는 것이 당연합니다. +) 코드를 작성할 때에 별도의 처리를 하지 않는 이상 모든 일들은 메인 스레드가 작업하게 됩니다. 2. Global Queue - Concurrent(동시) 큐 - QoS(Quality of Service)에 따라 6종류로 나뉨 QoS는 작업의 중요도를 결정합니다. 소요.. 2021. 12. 21.
동기/비동기, 직렬/동시 1. 동기 vs 비동기 안녕하세요◠‿◠ 고고입니다. 카페를 예로 들자면 동기 - 앞의 사람이 주문을 해서 음료(결과)를 받을 때까지 뒤의 사람들은 모두 다 대기합니다. 비동기 - 앞의 사람이 주문을 하고 진동벨을 받아가고, 뒤의 사람은 주문을 한다. 진동벨이 울리면 음료를 받아가면 됩니다. 요약하면 동기 - 요청을 보낸 후 응답(=결과)를 받아야지만 다음 동작이 이루어지는 방식 비동기 - 요청을 보낸 후 응답(=결과)와는 상관없이 다음 동작이 이루어지는 방식 동기(sync) 장점 - 설계가 간단하고 직관적 단점 - 결과가 주어질 때까지 아무것도 하지 못하고 대기해야 함 비동기(Async) 장점 - 아래 예제처럼 서버로부터 데이터를 가져오는 동안 다른 작업을 할 수 있으므로 자원을 효율적으로 사용할 수 있.. 2021. 12. 21.