1
의 특정 스레드에서 코드를 실행 :내가이 같은 기능을 가지고 스위프트
func foobar() {
let targetThread = Thread.current
DispatchQueue.main.async {
UIView.animate(withDuration: 0.5, animations: {
// Code I need to run on the main thread
}, completion: {
// Code I want to run on targetThread -- HOW?
}
}
}
어떻게 targetThread
에서 코드를 실행합니까? 감사.
현재 실행중인 스레드를 사용하는 대신 새 스레드를 만드는 것이 좋습니다. 메서드 외부에 대한 액세스를 유지하고이 메서드를 호출 할 때 메서드를 시작합니다. class var current : Thread 현재 실행 스레드를 나타내는 스레드 객체를 반환합니다. – Deepak
왜 특정 스레드에서 코드를 실행해야합니까? 당신은 그렇게해서는 안되며 이것은 낙담합니다. 완료 블록에서'DispatchQueue.global(). async'를 원하고 그곳에서 코드를 실행하고 싶지만 목표 스레드에서 코드가 실행되는 이유를 알려주십시오. – Alistra
대리자를 호출 한 동일한 스레드에서 대리자를 호출하는 것이 일반적입니다. 불행히도 gcd는 실제로 그것을 지원하지 않습니다. NSObject의 performSelector : onThread는 사용할 수 있지만 매우 깨끗한 API는 아닙니다. performEelector : onThread를 사용하는 performBlock : onThread 메서드가 프로그램에있는 것을 보았습니다. – EricS