반응형
swift에서 기능 지연
제가 샘플을 채취할 코드 같은 것은 없는데, 제가 어떻게 해야 하는지 몰라서 그러는데, 누가 swift로 일정 시간 동안 기능을 지연시키는 방법을 알려주실 수 있나요?
GCD를 사용할 수 있습니다(10초 지연 예제).
스위프트 2
let triggerTime = (Int64(NSEC_PER_SEC) * 10)
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, triggerTime), dispatch_get_main_queue(), { () -> Void in
self.functionToCall()
})
스위프트 3와 스위프트 4
DispatchQueue.main.asyncAfter(deadline: .now() + 10.0, execute: {
self.functionToCall()
})
스위프트 5 이상
DispatchQueue.main.asyncAfter(deadline: .now() + 10.0) {
//call any function
}
10초 지연 동안 Swift 3 이상 버전
DispatchQueue.main.asyncAfter(deadline: .now() + 10) { [unowned self] in
self.functionToCall()
}
NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(3), target: self, selector: "functionHere", userInfo: nil, repeats: false)
이렇게 하면 3초 지연과 함께 함수 Here()가 호출됩니다.
지연 함수에 인수를 추가하기 위한 것입니다.
먼저 사전을 설정한 후 userInfo로 추가합니다.타이머를 인수로 사용하여 정보의 랩을 해제합니다.
let arg : Int = 42
let infoDict : [String : AnyObject] = ["argumentInt", arg]
NSTimer.scheduledTimerWithTimeInterval(NSTimeInterval(3), target: self, selector: "functionHereWithArgument:", userInfo: infoDict, repeats: false)
그러면 호출된 함수에서
func functionHereWithArgument (timer : NSTimer)
{
if let userInfo = timer.userInfo as? Dictionary<String, AnyObject>
{
let argumentInt : Int = (userInfo[argumentInt] as! Int)
}
}
언급URL : https://stackoverflow.com/questions/28821722/delaying-function-in-swift
반응형
'programing' 카테고리의 다른 글
알 수 없는 사용자가 내 SQL(Azure) DB에 액세스하도록 허용하려면 어떻게 해야 합니까? (0) | 2023.05.18 |
---|---|
64비트 애플리케이션 및 VB2008 Express에서 편집 및 계속을 사용하려면 어떻게 해야 합니까? (0) | 2023.05.13 |
MSB3247 해결 - 동일한 종속 어셈블리의 서로 다른 버전 간에 충돌이 발견됨 (0) | 2023.05.13 |
왜 java.lang으로 끝나는 거지?잘못된 인수Casbah / Java MongoDB 드라이버에 대한 예외? (0) | 2023.05.13 |
스토리보드에서 UIScrollView를 사용하는 방법 (0) | 2023.05.13 |