草庐IT

主线程

全部标签

ios - 如何在其他线程中打印主线程的回溯?

如何在其他线程中打印主线程的回溯?在其他线程中,我想打印主线程的回溯。有没有适合我的示例代码? 最佳答案 做类似的事情:dispatch_async(dispatch_get_main_queue(),^{NSLog(@"Trace=%@",[NSThreadcallStackSymbols]);}); 关于ios-如何在其他线程中打印主线程的回溯?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q

ios - 使用 GCD 并回调主线程时如何设置正确的对象拆卸?

考虑这个设置:对象A创建对象B做一些工作,并将自己设置为B的委托(delegate),以通知工作进度。B使用GCDblock做一些工作,并用有关工作完成的委托(delegate)方法向A发回信号。A想在工作完成后拆除(发布)B。在代码方面:对象A:B*b=[[Balloc]init];b.delegate=self;[bdoSomeWork];-(void)didSomeWorkFromB:(B*)b{[brelease];b=nil;}对象B:-(void)doSomeWork{dispatch_async(dispatch_get_global_queue(DISPATCH_QUE

objective-c - 在创建 iOS 云集成框架时,我的基于 block 的方法是否应该在主线程上返回?

我正在为iOS创建云集成框架。我们允许您使用同步和异步选择器/回调和block实现来保存、查询、计数和删除。什么是正确的做法?在主线程或后台线程上运行完成block? 最佳答案 对于简单的情况,我只是将其参数化并在辅助线程上完成我能做的所有工作:默认情况下,回调将在任何线程上进行(最有效和最直接的线程-通常在操作完成后)。这是默认设置,因为通过main进行消息传递的成本非常高。客户端可以选择性地指定消息必须在主线程上生成。这样,它需要一行或一个参数。如果安全比效率更重要,那么您可能需要反转默认值。您还可以尝试批处理和合并一些消息,或

iphone - 主线程中的 MBProgressHUD 问题。

我想按以下方式使用MBProgressHUD:在我的方法中,我调用多个服务器和其他需要显示HUD的操作。我想知道在完成这些特定操作之前“保持”主线程的最佳方法是什么。例如:method{MBProgressHUD(action1)//don'tmoveonuntilthisisdone//someothercode...MBProgressHUD(action2)//someothercode...}我是iOS的新手,如果这太简单了,我很抱歉。谢谢。 最佳答案 我认为您在MBProgressHUD中使用了图形更改。例子:-[HUDs

iphone - 阻塞主线程直到 UIWebView 完成加载

我试图阻塞主线程直到UIWebView完成加载,但是在调用[UIWebViewloadRequest:]之后调用[NSThreadsleepForTimeInterval:]使加载永远不会complete:webViewDidFinishLoad委托(delegate)在sleep结束后被调用。为什么会这样?以及如何阻塞主线程?我正在从[ViewControllerwillRotateToInterfaceOrientation:]调用loadPage,我想做的是阻止iOS界面旋转,直到加载另一个方向的webview.-(void)loadPage{UIWebView*webview2

ios - 如何判断主线程是否已经消失?

我正在从后台线程执行几个步骤,在每次使用完成时更新View:[selfperformSelectorOnMainThread:@selector(updateProgress)withObject:nilwaitUntilDone:NO];问题在于用户是否拒绝此View。后台线程继续运行,并在执行其中一项操作时使应用程序崩溃。如何判断线程是否已消失? 最佳答案 您打算在主线程或后台线程中运行方法updateProgress吗?这是一个简单的检查技巧。对于完整的证明,您应该使用NSOperationQueue而不是performSel

ios - 分派(dispatch)异步在编码图像时卡在主线程上

所以我正在获取此UIImage数据并将其转换为base64中的字符串。问题是它在转换时卡在UI线程上,我不确定为什么。-(void)processImage:(UIImage*)image{dispatch_queue_tmyQueue=dispatch_queue_create("MyQueue",NULL);[self.spinnerOutletsetAlpha:0.0f];[self.spinnerOutletstartAnimating];dispatch_async(myQueue,^{//ConvertimageNSData*myData=[UIImagePNGRepres

获取双异步返回值时,如何保证主线程不阻塞?

一、前情提要在上一篇文章中,使用双异步后,如何保证数据一致性?,通过Future获取异步返回值,轮询判断Future状态,如果执行完毕或已取消,则通过get()获取返回值,get()是阻塞的方法,因此会阻塞当前线程,如果通过newRunnable()执行get()方法,那么还是需要返回AsyncResult,然后再通过主线程去get()获取异步线程返回结果。写法很繁琐,还会阻塞主线程。下面是FutureTask异步执行流程图:二、JDK8的CompletableFuture1、ForkJoinPoolJava8中引入了CompletableFuture,它实现了对Future的全面升级,可以通

ios - UIKit如何在主线程阻塞时绘制动画的UIActivityIndi​​cator?

考虑下面的代码。运行时,事件指示器会出现并显示动画,同时“测试”会重复记录到控制台。为什么?我希望事件指示器出现在屏幕上但无法动画,因为“测试”block在事件指示器的下一次重绘之前在主队列上执行,并且该block永远不会完成执行。UIKit是否在主线程之外绘制事件指示器?-(void)viewDidLoad{[superviewDidLoad];UIActivityIndicatorView*v=[[UIActivityIndicatorViewalloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray]

ios - iOS中的主线程实现

我正在用ObjectiveC(iOS)做一些事情,但陷入了崩溃,这种情况有时只会发生。这是我的代码(当txn完成时,它在一个block中被调用)。dispatch_async(dispatch_get_main_queue(),^{//arraywhichisusedtoshowtableviewrows//someOtherArrayisarraywhichhasdatafromresponseofatxnmyArray=[[NSMutableArrayalloc]initWithArray:someOtherArray];[selfcallSomeMethod];});callSo