- Siêu lớp và danh mục iOS/Objective-C
- object-c - -1001 lỗi khi NSURLSession vượt qua httpproxy và /etc/hosts
- java - Nhận địa chỉ url bằng lớp mạng
- ios - Âm thanh không phát trong thông báo đẩy
Tôi đang sử dụng for in để tạo khoảng 20 mục ô.
Nhưng bên trong for có DispatchQueue.main.async và for in sẽ chuyển sang phần tiếp theo trước khi nó kết thúc.
Vì vậy, tôi muốn hoàn thành việc đăng nhập sau khi DispatchQueue.main.async hoàn tất.
Đây là mã:
cho mục trong 0 ..< CollectionView.numberOfItems(inSection: 0)
{
hãy để indexPath = IndexPath(item: item, phần: 0)
var photoHeight = CGFloat(50.0)
_ = delegate.collectionView(collectionView, HeightForPhotoAtIndexPath: indexPath)
{ (giá trị) trong
DispatchQueue.main.async
{
ảnhHeight = giá trị
đặt chiều cao = self.cellPadding * 2 + photoHeight
let frame = CGRect(x: xOffset[cột], y: yOffset[cột], chiều rộng: cộtWidth, chiều cao: chiều cao)
hãy để insetFrame = frame.insetBy(dx: self.cellPadding, dy: self.cellPadding)
hãy để thuộc tính = UICollectionViewLayoutAttribution(forCellWith: indexPath)
thuộc tính.frame = insetFrame
self.cache.append(thuộc tính)
self.contentHeight = max(self.contentHeight, frame.maxY)
yOffset[cột] = yOffset[cột] + chiều cao
cột = cột < (self.numberOfColumns - 1) ? (cột + 1) : 0
}
}
// DispatchQueue.main.async chưa xong mà chạy ở đây.
}
câu trả lời hay nhất
Bạn thậm chí không cần phải sử dụng ở đây DispathQueue.main.async
. Bạn không thực hiện bất kỳ công việc giao diện người dùng nào, vì vậy bạn không cần phải tham gia vào chuỗi chính.
Cuộc gọi không đồng bộ không chạy tuần tự như bạn mong đợi. Hãy nghĩ về VoIP...
print('bắt đầu cuộc gọi mạng')
NetworkClient.get(url) { phản hồi, lỗi trong
print('trở về từ mạng')
}
print('chức năng hoàn thành')
Nếu bạn gọi nó, đầu ra có thể là:
bắt đầu cuộc gọi mạng
chức năng hoàn thành
được trả về từ mạng
Điều này là do các hàm không đồng bộ được gửi đi và mất thời gian để hoàn thành nhưng việc thực thi vẫn có thể tiếp tục. Sau khi cuộc gọi mạng hoàn tất, trình xử lý gọi lại/hoàn thành sẽ được gọi và sau đó mã sẽ chạy.
Đây là một ví dụ khác Lệnh gọi hàm không đồng bộ trong Swift
Về ios - Chuyển sang bước tiếp theo khi cần trong Swift 4, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/53041027/
Tôi là một lập trình viên xuất sắc, rất giỏi!