草庐IT

iOS - 另一个线程需要将 reloadData 发送到主线程

我有一个单独的线程创建一个UIView对象,将它插入到UITableView的数据源中,然后在UITableView上调用reloadData。但是,由于是单独的线程,所以不能直接调用reloadData,需要让主线程来做...但是怎么告诉主线程来做呢?谢谢 最佳答案 [self.tableViewperformSelectorOnMainThread:@selector(reloadData)withObject:nilwaitUntilDone:NO]; 关于iOS-另一个线程需要将

ios - WKWebView:尝试从主线程同步查询javascript

有没有办法从主线程同步查询javascript?使用带有回调参数的异步函数从native代码查询Javascript以处理响应:funcevaluateJavaScript(_javaScriptString:String,completionHandlercompletionHandler:((AnyObject!,NSError!)->Void)?)通常可以通过暂停线程并使用信号量控制执行来将异步行为转变为同步行为://Executinginthemainthreadletsema=dispatch_semaphore_create(0)dispatch_async(dispatc

ios - 我的 iOS 委托(delegate)方法是否应该始终在主线程上返回?

这是一个“最佳实践”问题,我似乎无法在网上找到好的答案。我正在创建一个静态代码库,它提供了几个用于进度反馈的委托(delegate)方法。库管理它自己的队列,所以下载之类的事情显然不是在主线程上完成的,但我的问题是我应该确保我的委托(delegate)方法总是在主线程上调用,还是从我正在使用的排队线程?如果他想在我的委托(delegate)方法中进行UI更新,是否依赖于使用该库的开发人员检查他是否在主线程上?干杯,山姆 最佳答案 您可以采用任何一种方式;您只需要将其记录下来即可。有些API会在主线程上回调您,有些会在您用来开始工作的

swift - 从 Async F# 在主线程上执行代码

我正在F#中实现以下Swift方法:funcdownloadCachedImage(url:URL){ifletcachedImage=imageCache.object(forKey:url.absoluteStringasAnyObject){self.image=cachedImageas!UIImage}URLSession.shared.dataTask(with:url,completionHandler:{(data,response,error)inif(error!=nil){print(error)return}DispatchQueue.main.async{if

swift - 保存在后台线程后,多线程核心数据对象在主线程上具有空属性

正如标题所描述的,我在后台线程保存了一个对象后,它的属性在主线程是空的,比如字符串是"",数字是0等等这是一些代码!用户类:@objc(User)classUser:NSManagedObject{@NSManagedvarid:Int32@NSManagedvaremail:String}发生实际保存的UserRepository:funcsaveUser(fromJSONjson:Any,onSuccess:((User)->Void)?,onFailure:((Error)->Void)?){dataManager.persistentContainer.performBackg

ios - 在主线程上重新加载 UITableView 并不总是有效

我遇到的问题是,当我在主队列上重新加载UITableView的数据时,它不会一直重新加载数据。当我启动应用程序时,它只重新加载数据大约5次中的3次,有一些重新加载条纹(3到5次启动),然后有一些不重新加载条纹(2到3次启动)。我正在使用Swift2在装有iOS8.4和Xcode7Beta4的iPhone6上测试这个应用。这是我的UIViewController持有UITableView的代码,它也是应用程序启动后的初始屏幕。importUIKitclassTableController:UIViewController,CLLocationManagerDelegate{letrowT

swift - (XCTestCase) 如何断言 block 是否已在主线程或外部(任何其他线程)调用?

如果在主线程或外部(任何其他线程)调用了一个block,如何断言?假设我们有一个类:classA{funcasyncOperation(handler:Void->Void){//someprocessingdispatch_async(dispatch_get_main_queue(),completionHandler)}}classATests:XCTestCase{functestHandlerInMainThread(){leta=A()letexpectation=expectationWithDescription("Handlermustbecalledinmainth

swift - 如何确保 CLLocationManager 在主线程上延迟实例化?

classFoo{staticletsharedInstance=Foo()//singletonprivateoverrideinit(){}lazyvarlocationManager:CLLocationManager={letmanager=CLLocationManager()returnmanager}()创建了类Foo的单例实例,它具有延迟实例化的CLLocationManager。Foo单例实例在后台线程上实例化,但必须在主线程上创建CLLocationManager。实现该目标的最优雅方式是什么? 最佳答案 您可以

ios - 在主线程上同步启动 NSOperation 时出现奇怪的间歇性崩溃

我这里有一个系统,它以缝合在一起的位呈现自己。有时这些位在后台线程中呈现,但有时当反馈延迟非常重要时,这些位在主线程上同步呈现。这段代码在主线程中调用,方法名为createPatchView,patchView.createRenderingOperation()返回NSOperation的子类做渲染。异步版本工作正常,操作队列选择作业并在后台处理它。但是我们要立即渲染它的另一个分支给我间歇性崩溃。//Figureoutwhentorenderitifasync{//Addthepatchrenderingjobtothetilerenderingqueue.tiledView.ren

swift - 如何告诉主线程 URLSessionDataTask 已经完成

使用Swift4,我有这段代码尝试向RESTAPI发出POST请求:spinner.startAnimation(self)btnOk.isEnabled=falsebtnCancel.isEnabled=falseattemptPost()spinner.stopAnimation(self)btnOk.isEnabled=truebtnCancel.isEnabled=true执行此操作的函数(Constants和Request是我创建的用于创建请求对象并保存常用数据的类):funcattemptPost(){leturl=Constants.SERVICE_URL+"accoun