728x90 반응형 프로그램 개발해서 돈벌기/iOS33 [Swift] IOS 웹뷰(webview)에 캐쉬(cache) 적용하기 2가지 방법 1. URLRequest 멤버 변수에 적용 let myURL = URL(string: "https://m.naver.com") var myRequest = URLRequest(url: myURL!) myRequest.cachePolicy = .returnCacheDataElseLoad if let webView = self.m_web { webView.load(myRequest) } 2. URLRequest 생성 시 파라미터로 적용 SwiftUI의 인라인 호출에 유용합니다. let myURL = URL(string: "https://m.kiwidisk.com") let myRequest = URLRequest(url: myURL!, cachePolicy:.returnCacheDataElseLoad) if.. 2023. 4. 28. swift에서 async와 await 기본 사용법과 http 통신에서 활용 async/await는 Swift 5.5에서 새롭게 도입된 비동기 프로그래밍 패턴입니다. 비동기 프로그래밍은 대개 긴 작업을 수행할 때 유용하며, 이를 통해 앱의 반응성을 높이고 멀티태스킹을 효과적으로 처리할 수 있습니다. async/await는 비동기 코드를 작성하고 호출하는 방법을 단순화하며, 콜백 기반의 비동기 프로그래밍에서 발생하는 복잡성을 줄여줍니다. async는 비동기 함수를 선언할 때 사용되며, await는 비동기 함수가 반환될 때까지 현재 스레드의 실행을 일시 중지합니다. 예를 들어, 다음과 같은 함수가 있다고 가정해 봅시다. func fetchUserData(completion: @escaping (Result) -> Void) { // 네트워크를 통해 사용자 데이터를 가져오는 긴 작업 .. 2023. 2. 24. [swift] DispatchQueue.global(qos: .userInitiated).async vs DispatchQueue.main.async 공통점과 차이점 DispatchQueue.global(qos: .userInitiated).async와 DispatchQueue.main.async 모두 비동기적으로 작업을 실행하는 방법 중 두 가지입니다. 하지만 두 방법은 목적과 사용되는 큐의 특성에 따라 차이점이 있습니다. 공통점: 두 방법 모두 비동기적으로 작업을 실행하므로, 현재 실행중인 스레드와는 별도의 백그라운드 스레드에서 작업이 실행됩니다. 두 방법 모두 클로저를 인자로 받아 실행합니다. 두 방법 모두 큐(Queue)를 사용하여 작업을 관리합니다. 차이점: DispatchQueue.global(qos: .userInitiated).async는 글로벌 백그라운드 큐에서 실행되며, .userInitiated QoS 클래스를 사용합니다. 이는 중요하고 높은 우선.. 2023. 2. 23. swift에서 시간 차이(30분) 계산해서 print로 보기 창이 열리고 닫힐때를 가정해 보았습니다. 멤버 변수 초기화때 현재 시간을 할당해 주었습니다. // 멤버 변수 var mT : Date // 초기화 init() { self.mT = Date() } .onDisappear() { let now = Date() // 닫힐때 시간에서 창이 열릴때 시간을 빼 줌 dCheck = now.timeIntervalSinceReferenceDate - mT.timeIntervalSinceReferenceDate // 빼준 시간을 출력 print("[dCheck] \(dCheck) onDisappear") } // print 결과값: [dCheck] 4.32000994682312 onDisappear 결과 값을 초로 표시가 됩니다. 위 예제 소스는 4초 동안 화면에 머물렀.. 2023. 2. 22. Apple TV 4K 기기 및 시뮬레이터에서 앱 삭제 방법 아이폰에서 앱을 삭제를 하려면 앱 아이콘을 길게 눌러 삭제 메뉴를 선택합니다. Apple TV 4K에서 앱 삭제도 같은 방법으로 삭제를 할 수 있습니다. 앱을 길게 누르면 리모컨에서 플레이(▷||) 버튼을 눌러 옵션 메뉴를 호출할 수 있습니다. 메뉴에서 삭제를 선택합니다. 다른 한가지 방법은 설정에서 가능합니다. 설정에서 "일반"을 선택합니다. 일반 내 "저장 공간 관리"을 선택합니다. 설치한 앱 리스트와 앱 삭제 버튼을 볼 수 있습니다. 앱을 선택하여 삭제를 진행하면 됩니다. ( 설정 -> 일반 -> 저장 공간 관리 ) 개발 시에는 시뮬레이터를 사용합니다. 그런데 리모컨을 제공하지 않습니다. 그래서 앱을 삭제하고 싶으면 설정에서 진행하면 합니다. 2022. 11. 29. Synchronous operation using await when clicking a Button in SwiftUI and receiving the result through HTTP communication. SwiftUI에서 Button을 클릭했을때 HTTP 통신으로 결과를 가져오는 검색을 많이 이용합니다. 그런데 통신 시 사용하는 URLSession을 사용하면 비동기적으로 동작합니다. 그래서 버튼 내 검색을하는 함수를 만들어서 정상적으로 동작 시에 true를 가져오고 실패 시 false를 가져오는 함수를 만들면 잘못된 결과 값을 받게 된다. // async // 버튼 Button(action: { let bResult = asyncTest(url: URL(string: "https://www.google.com")!) print(bResult) }){Text("접속 코드 확인")} .buttonStyle(.borderedProminent) func asyncTest(url: URL) -> Bool { va.. 2022. 11. 24. 이전 1 2 3 4 5 6 다음 728x90 반응형