thisによると、@mattのdispatch_after
の使用についての鮮明な答えは、私が遊び場でコードを試したところ、問題なく動作します(エラーなし)。私はDispatchTime.now()
として、下位互換性をしようとするときだけだけなので、のようなiOS 10
のために提供されています:速攻3のDISPATCH_TIME_NOWと下位互換性
func delay(_ delay: Double, closure:() ->()){
guard #available(iOS 10, *) else {
dispatch_after(
dispatch_time(
DISPATCH_TIME_NOW,
Int64(delay * Double(NSEC_PER_SEC))
),
dispatch_get_main_queue(), closure)
return
}
let when = DispatchTime.now() + delay
DispatchQueue.main.after(when: when, execute: closure)
}
コンパイラはReplace "DISPATCH_TIME_NOW" with "dispatch_time_t(DISPATCH_TIME_NOW)"
にDISPATCH_TIME_NOW
を修正するために提供しており、
が値を変換できませんというエラーがスローされます'Intnt'型の予想される引数型 'dispatch_time_t'(別名 'UInt64')
コンパイラが提供するように修正しようとしましたが、より多くのエラー。ここで後方互換性はどのように使うべきですか?私は何をしていますか?助けてください、ありがとう!
'when = dispatch_time(DISPATCH_TIME_NOW、delay)' – iphonic
'DispatchTime.now()'がiOS 9で実行されたことがありますか?一部の可用性注釈が間違っています。 –
なぜswift3構文を使用するにはiOS10をチェックする必要がありますか? swift3はiOS 7,8のような下位バージョンをサポートしています。swift3で新しいXcode8でコンパイルしたい場合は、コードをswift 3の構文で書くだけです。あなたが必要とする全てのコード:func delay(_ delay:double、closure:() - >()){ DispatchQueue.main.after(DispatchTime.now()+ delay、execute:closure) } – larva