본문 바로가기
반응형

전체 글53

Swift GCD 간단한 테스트 GCD 현재 사용 중인 스레드에서 글로벌 큐로 비동기로 작업을 보내다. DispatchQueue.global().async { } 아래 코드는 실질적으로는 메인스레드에서 실행된다. DispatchQueue.global().sync { } (1) DispatchQueue.global().async { task1 } (2) DispatchQueue.global().async { tast2 } 글로벌큐는 기본적으로 동시 큐이기 때문에 (1), (2) 실행 시 동시적으로 실행된다. (3) DispatchQueue.global().sync { task1 } (4) DispatchQueue.global().async { tast2 } (3), (4) 실행 시 (3)작업이 끝난 후 (4)가 실행된다. let seri.. 2022. 12. 20.
Swift 해시 테이블 (Hash Table) Swift에서 해시 테이블이란 먼저, 해시 테이블이란 유일한 키값과 벨류로 저장되는 자료구조입니다. 대표적으로 Swift에서는 딕셔너리(Dictionary), 집합(Set)이 테이블 구조를 따릅니다. 따라서 딕셔너리의 키 또는 집합 요소가 되려면 hashable 해야 합니다. 여기서 hashable 하다는 건 Swift의 hashable 프로토콜을 채택함을 의미합니다. Hashable Protocol hashable 프로토콜을 채택했다는 건 hasher의 hash 함수를 통해 다양한 여러 길이의 데이터를 고정된 길이의 정수 값으로 변환할 수 있음을 의미합니다. 이때, 다양한 여러 길이를 고려할 필요가 없기 때문에 성능적으로 이득을 볼 수 있습니다. hash함수를 통해 키값에 대응하는 벨류값(해쉬값)을 얻.. 2022. 12. 20.
Xcode 빌드 멈춤 Xcode 빌드가 멈춰서 진행되지 않는다면, 최근에 수정했던 코드를 유심히 살펴봐야 합니다. Show the Report navigator(comman+9)로 log를 확인하여, 빌드가 진행되지 않는 .swift 파일을 찾아 범위를 좁힐 수 있습니다. 저의 경우 아래 내용이 원인이었습니다. 코드를 작성하다 보니 CGFloat타입의 값을 Double타입의 변수에 대입하는 일이 발생되었는데, 컴파일러에서 오류를 나타내어주지 않고, 빌드가 오랜 시간 지나도 끝나지 않았습니다. 타입의 값을 일치시켜주었더니 문제가 해결되었습니다. 괜히, 이것저것 Build Setting 부분을 건드리며 많은 삽질의 시간을 보냈습니다. 여러분도 세팅 부분을 건드린 적이 없는데, 이유 없이 빌드가 끝나지 않는다면 제 글을 참고해보시.. 2022. 1. 14.
[Swift] required init UIView를 상속받은 자식 클래스에서 init를 만들 시 아래 required init를 작성해야 합니다. required init은 IB 기반으로 이용 시 호출됩니다. 따라서 해당 클래스를 코드로만 이용할 것이라면 fatalError("init(coder:) has not been implemented")를 구현해주어 실수로 해당 클래스를 IB에서 사용 시 오류를 발생시킬 수 있습니다. 또한 fatalError("init(coder:) has not been implemented")를 구현해주면 required init의 super.init()을 하지 않아도 됩니다. required init?(coder: NSCoder) { fatalError("init(coder:) has not been impl.. 2021. 8. 30.
[Swift UI] Image Spacing 제거 SwiftUI에서 Image를 넣으면 시스템에서 자동으로 spacing이 들어가있습니다. Text는 들어가있지 않습니다. 자동으로 들어간 spacing를 없애주려면 VStack(spacing:0)을 주면 됩니다. import SwiftUI struct ContentView: View { var body: some View { VStack(spacing:0) { Image("image1") .resizable() .edgesIgnoringSafeArea(.all) .aspectRatio(contentMode: .fit) Image("image1") .resizable() .edgesIgnoringSafeArea(.all) .aspectRatio(contentMode: .fit) } } struct Cont.. 2021. 8. 26.
반응형