Tôi đang cố gắng để kiểm tra việc hủy bỏ một mục DispatchWork
trong một sân chơi Swift, mặc dù trong vài phần nghìn giây thực thi có lỗi, tôi không chắc nó thực sự là gì chỉ ra, cũng không phải tôi có thể nói nếu lỗi gây ra việc hủy bỏ chứ không phải là phương pháp cancel()
...Xcode: Lỗi miền = DVTPlaygroundCommunicationErrorDomain Code = 1
func testDispatchWorkItems() {
let queue = DispatchQueue.global(qos: .userInitiated)
var item: DispatchWorkItem?
// create work item
item = DispatchWorkItem {
for i in 0 ... 100000 {
if item!.isCancelled { break }
print(i)
}
}
// start it
queue.async(execute: item!)
// after three seconds, stop it
queue.asyncAfter(deadline: .now() + 3) {
item?.cancel()
}
}
testDispatchWorkItems()
2016-10-26 11:14:33.898 com.apple.dt.Xcode.PlaygroundStub-macosx[30685:18567692] Error encountered communicating with Xcode: Error Domain=DVTPlaygroundCommunicationErrorDomain Code=1 "Cannot send data because stream is closed." UserInfo={NSLocalizedDescription=Cannot send data because stream is closed.}
có ai đó có một ý tưởng gì lỗi được chỉ ra?
Tôi đã tìm thấy cùng một vấn đề. Nó chỉ xảy ra ở sân chơi - nếu bạn chạy nó bên trong một ứng dụng thì nó sẽ hoạt động. Mở để tìm hiểu lý do tại sao có giới hạn này trong sân chơi nếu ai đó biết. –