grand-central-dispatch
全部标签 我是ObjectiveC的新手,但已经在Swift上工作了一段时间。我假设Objectivec在逻辑上与swift相似。在处理json数据请求时,我必须提供一个警报Controller;所以我不得不使用dispatchasync让它快速工作。这是我在Swift中使用的代码:funcalertMessage(message:String)->Void{letalert=UIAlertController(title:"Alert",message:message,preferredStyle:.Alert)letokAction=UIAlertAction(title:"OK",styl
我目前有一个非常奇怪的错误。一个方法被调用,它应该通过停止它来隐藏一个UIActivityIndicatorView(启用停止时自动隐藏)和一个名为badIndicatorUIImageView.作为替代,它应该显示另一个名为goodIndicator的UIImageView。[goodIndicatorsetHidden:NO];[badIndicatorsetHidden:YES];[refreshIndicatorstopAnimating];NSLog(@"statussettinggoodshouldbecompleted");控制台会立即打印以下内容,但大约需要三秒钟才
我需要执行三个彼此独立的任务,因此我想同时执行它们。但我需要他们都完成通知另一个对象。AFAIK,*dispatch_apply*创建并发线程,但它迭代一个集合或一个对象数组并执行相同的任务多次循环,我想为每个线程执行不同的任务。是否可以使用GCD做我想做的事?如果不是,最好的方法是什么?谢谢! 最佳答案 使用dispatch_group。ConcurrencyProgrammingGuide举个例子,有moreAPI这也可能对您有所帮助。使用dispatch_group_create创建调度组。使用dispatch_group_a
我想了解一些关于GCD和线程的知识。我的ViewController中有一个for循环,它要求我的模型执行一些异步网络请求。因此,如果循环运行5次,模型将发出5个网络请求。考虑到我正在使用NSURLConnection的sendAsyncRequest并且将在另外5个线程上调用完成处理程序这一事实,声明我的模型已经创建了5个线程是否正确?现在,如果我要求我的ViewController在不同的线程上执行这个for循环,并且在循环的每次迭代中,对模型的调用应该依赖于前一次迭代,我是否会创建一个“Inception”线程在这里?基本上,只有在前一个线程完全完成时,我才希望对我的服务器发出后
我开发了以下方法,用于检查应用程序与服务器通信的能力。该方法执行一个简单的查询,并且知道如果得到结果,应用程序应该已连接(基本的ping机制)。-(BOOL)isAppConnected{__blockBOOLisConnected=NO;dispatch_semaphore_tsemaphore=dispatch_semaphore_create(0);[[SFRestAPIsharedInstance]performSOQLQuery:@"SELECTidFROMAccountLIMIT1"failBlock:^(NSError*e){isConnected=NO;NSLog(@"
我有一个UIActivityItemProvider子类,它应该通过执行以下操作为UIActivityViewController提供一个NSURL:上传一张图片到我的服务器从服务器接收一个URL将该URL提供给共享者。理论上看起来相当简单:设置placeholderItem方法返回一个虚拟NSURL,然后设置所有逻辑来处理item中的上传等>方法。问题是item方法是在后台线程上调用的单个同步方法,应该处理所有处理并返回一个项目(在本例中,一个NSURL)...而我需要用来处理上传的方法是异步的(即,我创建了一个NSURLConnection并将UIActivityItemProvi
我正在努力解决异步问题;分派(dispatch)、多线程、运行循环等。有什么区别:1)在给定的方法中创建一个NSURLRequest和NSURLConnection,并让它执行并响应委托(delegate)方法(didReceiveResponse、didReceiveData、connectionDidFinishLoading等),以及2)创建一个block并让它dispatch_async?使用第一种方法,我可以访问委托(delegate)方法(我仍然可以访问那些使用分派(dispatch)的方法吗?),并且委托(delegate)方法的执行在触发(或接近触发)时执行。使用blo
我有这个dispatch_queue代码,我用它来发出3个不同的数据请求。然后我在主线程上更新tableView。我还能在主线程中放入什么?我正在使用此[selfrequestExtendedData];从Web服务下载数据,然后对其进行解析并设置为UILabels等...我的问题是:如果我有[selfrequestExtendedData];在后台线程中运行,我如何在主线程中使用此数据的内容更新UILabel?我应该把其他所有东西都放在主线程区域吗?所有的UIView、UILabels和UIButton对象等...感谢帮助dispatch_queue_tjsonParsingQueu
我有一个非常密集的UITableView,需要稍微优化一下。问题是,如何使用大中央站有效地做到这一点。每个单元格都有一个带有几个标签和两个图像的UIView。我已经对TableViewCell进行了子类化,并且View正在被重用,尽管当表变大时它仍然有点滞后。我将如何使用GCD来优化表格?或者有更好的解决方法吗?我在线程管理方面不是很擅长,正在寻找一些建议。这是我的表格View的代码:-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPath{stat
我想说明MBProgressHUD项目的进度,但是当我触发此方法时:-(IBAction)signInBttn:(id)sender{MBProgressHUD*hudd=[MBProgressHUDshowHUDAddedTo:self.viewanimated:YES];hudd.mode=MBProgressHUDModeAnnularDeterminate;hudd.labelText=@"Loading";__blockfloatvalue=0;for(intj=0;jhud完全显示为100%。这仅供我引用,我不知道如何创建计算某些东西的后台任务以及他何时完成例如40%HUD