gpt4 book ai didi

ios - 闭包执行

转载 作者:行者123 更新时间:2023-11-28 08:30:29 27 4
gpt4 key购买 nike

我有一个执行闭包的函数。

func callWebServiceToFindLocation(limitedClLocations: [CLLocation]) {
// self.view.showLoaderWithMessage(FRDMessageConstants.pleaseWaitWhilecollectingGPSCoordinates)
FRDRouteDirectionServices.getRoutesWithLocations(limitedClLocations, travelMode: TravelMode.TravelModeWalking, completitionBlock: { (routes) in

// self.routes.arrayByAddingObject(routes)
// print("\(self.routes.count)")
FRDMapUtilities.sharedInstance.plotPolyLineOnMap(routes as! NSArray, viewMap: self.viewMap)
FRDMapUtilities.sharedInstance.addMarkerAndSetAllMarkerBoundToScreen(self.clLocations, viewMap: self.viewMap, allStoreDetails: self.allStoreDetailsForMarker, myLocaion: self.myLocation)
self.view.hideLoader()
}, andErrorBlock: { (error) in
self.showRefreshButton()
self.view.hideLoader()
})
}

现在这个函数将被调用两次callWebServiceToFindLocation()出于某些原因,然后我不得不称之为 plotPolyLineOnMap只有一次,因此我附加了 FRDRouteDirectionServices.getRoutesWithLocations(limitedClLocations, travelMode: TravelMode.TravelModeWalking, completitionBlock: { (routes) in 中返回的路由
进入全局数组。
现在我知道闭包的执行是异步进行的。我怎么调用plotPolyLineOnMap全局路由数组仅一次。

最佳答案

检查关闭条件

let arrayRouts : NSArray = routes as! NSArray

if arrayRouts != nil && arrayRouts.count > 0 {
self.routes.arrayByAddingObject(routes)
self.plotPolyLineOnMap()
}

当第一次闭包被调用时,时间路由将为 nil,而第二次路由将有响应数据,因此这种情况应该有效。

关于ios - 闭包执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38967524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com