Notice
Recent Posts
Recent Comments
Link
투케이2K
583. (ios/swift5) [간단 소스] OperationQueue 사용해 callback 콜백 함수 전역 선언 사용 방법 본문
IOS
583. (ios/swift5) [간단 소스] OperationQueue 사용해 callback 콜백 함수 전역 선언 사용 방법
투케이2K 2024. 12. 1. 00:49[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : SWIFT5
[소스 코드]
// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------
- 언어 : Swift
- 개발 툴 : Xcode
- 사전) OperationQueue 설명 :
>> OperationQueue 는 작업 실행을 조절하는 큐 입니다
>> OperationQueue 사용 가능 범위 :
- iOS 2.0 이상
- 아이패드OS 2.0 이상
- 맥 카탈리스트 13.1+
- 맥OS 10.5 이상
- tvOS 9.0 이상
- 비전OS 1.0+
- 워치OS 2.0 이상
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[소스 코드]
// --------------------------------------------------------------------------------------
// ------------------------------------------------------------
// MARK: - [전역 변수 선언]
// ------------------------------------------------------------
var connectOperationQueue = OperationQueue() // [작업 큐]
var connectFlag = false // [플래그 값]
var workItem: DispatchWorkItem? = nil // [연결 타임 아웃 핸들러]
// ------------------------------------------------------------
// MARK: [작업 큐에 추가] : 함수에 completion: @escaping (Bool)->() 지정 필요
// ------------------------------------------------------------
self.connectOperationQueue.isSuspended = true
let block = { completion(self.connectFlag) }
self.connectOperationQueue.addOperation(block)
// ------------------------------------------------------------
// MARK: - [타임 아웃 지정 로직 처리 소스 추가]
// ------------------------------------------------------------
self.workItem = DispatchWorkItem {
var FTP_CONNECT_LOG = "[Time Out] : FTP Connection TimeOut"
S_Log._D_(description: "FTP 연결 실패", data: [
"M_LOG :: \(FTP_CONNECT_LOG)"
])
}
let delay = DispatchTime.now() + 20.0 // [특정 시간 후에 실행]
DispatchQueue.main.asyncAfter(deadline: delay, execute: self.workItem!)
// ------------------------------------------------------------
// MARK: - [지정된 작업 취소 방법]
// ------------------------------------------------------------
self.connectFlag = true
self.connectOperationQueue.isSuspended = false
// --------------------------------------------------------------------------------------
// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------
https://developer.apple.com/documentation/foundation/operationqueue
// --------------------------------------------------------------------------------------
반응형
'IOS' 카테고리의 다른 글
Comments