0
구현에서 볼 수없는 라이브러리에서 함수를 실행했습니다.Swift에서 스레드가 무기한 실행되는 것을 어떻게 중지합니까?
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
someClass.beginService();
});
이 라이브러리 클래스는 내 클래스 '대리자 기능을 호출합니다. 나는 self.someClass.beginService();
를 호출하기 때문에
class Mine: UIViewController, SomeClassDelegate {
let someClass = SomeClass();
override func viewDidLoad() {
super.viewDidLoad();
someClass.delegate = self;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
self.someClass.beginService();
});
}
func delegateCall() {
print ("delegateCall is called!");
// do some stuff
}
}
단어 delegateCall is called!
다음, 주기적으로 로그 창에 1 초 간격으로 인쇄됩니다.
문제는, 어떻게이 스레드를 종료 할 수 있습니까? 나는 리조트에 가고 싶지 않습니다 :
class Mine: UIViewController, SomeClassDelegate {
let someClass = SomeClass();
var okToRun = false;
override func viewDidLoad() {
super.viewDidLoad();
someClass.delegate = self;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
self.someClass.beginService();
okToRun = true;
});
}
func delegateCall() {
if okToRun {
print ("delegateCall is called!");
// do some stuff
}
}
@IBAction func buttonStopTapped (sender: AnyObject) {
okToRun = false;
}
}
이것은 백그라운드 루틴이 여전히 작동하고 있음을 의미하기 때문입니다.