草庐IT

ios - webViewDidFinishLoad 阻塞主线程

我刚刚注意到webViewDidFinishLoad方法阻塞了整个应用程序,所以我什至无法触摸任何按钮。我需要解析UIWebView的结果页面,这可能会花费很多时间。那么在不阻塞整个应用程序的情况下解析它的最佳方法是什么?也许创建另一个线程? 最佳答案 使用GCD在后台解析它:-(void)webViewDidFinishLoad:(UIWebView*)webView{//GetthecontentsfromtheUIWebView(inthemainthread)NSString*data=[webViewstringByEva

ios - 为什么一个简单的模态视图 Controller 在呈现和关闭时会滞后?

我的应用程序的主视图是一个UIImagePickerController相机View。当应用程序变为事件状态时(在didBecomeActive中),我展示了一个模态视图Controller,它显示了从网络请求生成的一些设置。(请注意,出于调试目的,我取出了网络请求,目前只显示一个虚拟View)模态视图动画流畅,但加载后卡住3秒,然后正常响应。关闭View后(动画也很流畅),我的图像选择器Controller暂停2秒,然后正常恢复。我已经从模态视图Controller中删除了所有功能,以确保没有任何操作阻塞主线程。我展示的是最基本的Controller,但用户界面仍然不稳定。我怀疑这是

ios - 如何使用 PSPDFKit 检查在后台线程中使用主线程代码?

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭6年前。Improvethisquestion我的应用程序缓慢频繁。这个UI很困惑。我不可能。我想使用PSPDFKit检查在后台线程中使用主线程代码。谢谢!

ios - 有没有办法让 synchronized 关键字不阻塞主线程

假设您想在iOS应用程序的后台做很多事情,但您对其进行了适当的编码,以便创建线程(例如使用GCD)来执行此后台事件。现在,如果您需要在某个时刻写入更新变量,但此更新可能发生或您创建的任何线程发生,该怎么办。你显然想保护那个变量,你可以使用关键字@synchronized为你创建锁,但这里有问题(摘自Apple文档)The@synchronized()directivelocksasectionofcodeforusebyasinglethread.Otherthreadsareblockeduntilthethreadexitstheprotectedcode—thatis,whene

ios - 为什么它在主线程上运行?

非常简单的代码:queue=[[NSOperationQueuealloc]init];[queueaddOperationWithBlock:^{NSLog(@"%@",[NSThreadmainThread]?@"main":@"notmain");}];打印“主要”。为什么?除非我调用[NSOperationQueuemainQueue],否则它不应该在bg线程中异步运行吗? 最佳答案 [NSThreadmainThread]总是返回一个对象(因此在转换为BOOL时产生YES),因为当有一个主线程时你的程序正在运行。如果要判断

iOS 线程并在主线程上更改 UI

我有以下AcceptCallBack方法,并希望在该方法运行时添加一个UIActivityIndi​​cator,因此[mvcperformSelectorOnMainThread:@selector(invoke)withObject:nilwaitUntilDone:YES];。invoke是改变UI的方法。然后我用这行[mvcperformSelectorOnMainThread:@selector(hide)withObject:nilwaitUntilDone:YES];删除UIActivityIndi​​cator。然而,似乎发生的是invoke仅在AcceptCallBa

ios - 必须分派(dispatch)到 iOS 11 中的主线程

在iOS11之前,我能够动态地重新加载TableView数据,而无需将重新加载分派(dispatch)到主线程。但是,现在我正在安装了iOS11的设备上进行测试,似乎我必须将每个UI更新分派(dispatch)到主线程才能使其正常工作。否则我最终会得到空的UI元素。即具有所有行但没有标签的TableView,或没有标题的按钮等。有谁知道iOS11中发生了什么变化要求这样做?有办法关闭它吗? 最佳答案 从远古时代开始,Apple就强调所有与UI元素的交互必须发生在主/GUI线程上。不听从这个建议会导致奇怪的行为:有时它会工作正常,其他

ios - UiKit 应该只从主线程调用警告

我通过单击按钮将事件添加到日历。每当我单击该按钮时,Xcode都会给我一个警告并使应用程序挂起大约几秒钟,然后将事件添加到日历中。警告如下:void_WebThreadLockFromAnyThread(bool),0x175bd5c0:从主线程或web线程以外的线程获取web锁。不应从辅助线程调用UIKit。我用来添加事件的代码如下:-(IBAction)btn_reminder_click:(id)sender{[selfaddEventTocalendar];}-(void)addEventTocalendar{EKEventStore*store=[[EKEventStorea

iphone - 有哪些技巧可以让您的 iPad 应用程序快如闪电?

我希望我构建的应用程序快如闪电。我应该使用什么技术来确保我的应用保持快速响应? 最佳答案 在主线程中尽量少做。使用NSOperations/GCD和其他后台技术从主线程加载所有内容。以及其他人所说的:) 关于iphone-有哪些技巧可以让您的iPad应用程序快如闪电?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4788309/

ios - 动画运行时在 iOS 应用程序的主线程上暂停执行

我正在使用导航Controller,并且我正在尝试在新ViewController推送之前运行动画。为此,我从UINavigationController委托(delegate)中捕获事件,并运行动画。也就是说,显然iOS动画是异步运行的,所以方法返回,我的动画与标准推送动画同时运行。关于如何解决这个问题有什么想法吗?情况是这样的:-(void)navigationController:(UINavigationController*)navigationControllerwillShowViewController:(UIViewController*)viewController