jjzjj

DISPATCH

全部标签

ios - 更改 slider 值以更改图像(coreImage)的强度时如何避免 "Received Memory warning"?

我正在尝试实现一种根据slider值更改图像色调的方法,但是当我连续更改slider值时,它显示内存警告并且应用程序崩溃。这是我的示例代码,我尝试使用dispatch_async-(void)valueChanged{floatslideValue=slider.value;NSLog(@"%0.f",slideValue);dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH,0.5),^{dispatch_async(dispatch_get_main_queue(),^{[filtersetVa

ios - 在不阻塞 UI 的情况下在 For 循环中添加延迟

在我的UI中,当点击一个按钮时,它会调用一个for循环来顺序执行多个任务。//ForLoopfor(inti=1;i在每个任务之后,我想添加一个用户定义的延迟。例如://ForLoopfor(inti=1;i在iOS中,使用Objective-C,有没有办法在for循环中添加这样的延迟,请记住:UI应保持响应。任务必须按顺序执行。for循环上下文中的代码示例会很有帮助。谢谢。 最佳答案 使用GCDdispatch_after。你可以在stackoverflow上搜索它的用法。不错的文章是hereSwift中延迟1.5秒的简要示例:d

ios - 将图像保存到相册时出现 NSInvalidArgumentException

我正在尝试下载图像文件并将其保存到如下相册dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{NSLog(@"DownloadingStarted");NSString*urlToDownload=@"http://wallpapercave.com/wp/66iglE0.jpg";NSURL*url=[NSURLURLWithString:urlToDownload];NSData*urlData=[NSDatadataWithContentsOfURL:url];if(urlDa

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

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

ios - 事件指示器不会以相同的方法停止

在viewDidLoad方法中,我初始化了一个ActivityIndi​​catorView。然后,在下面的方法中,我发送了事件指示器以启动。当我启动应用程序并运行if语句时,事件指示器启动,但是当执行调度队列中的操作时,activityIndi​​cator不会停止。这里的方法:-(void)tableView:(UITableView*)tableViewwillDisplayCell:(UITableViewCell*)cellforRowAtIndexPath:(NSIndexPath*)indexPath{if([indexPathrow]==[_myArraycount]-

ios - dispatch_async 用于从 url 获取许多图像

我想从不同的url获取许多图像并将其设置为图像的按钮。我试图像上面显示的那样执行此操作,但没有任何反应。当我访问这个ViewController时,它没有任何按钮图像,也没有显示横幅View...。dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^(void){NSURL*url=[NSURLURLWithString:[pictureUrlobjectAtIndex:i]];NSData*data=[[NSDataalloc]initWithContentsOfURL:url];d

ios - 如何使用 UIAutomation 处理慢速网络连接

我注意到当网络速度较慢时,我的所有UI测试都会失败。例如,用户尝试登录,然后下一个屏幕加载速度不够快,无法让另一个UIElement出现在屏幕上。如何在不使用delay()的情况下处理慢速网络连接? 最佳答案 您一定要看看多线程。在处理网络连接时,您应该在辅助线程中进行所有这些处理。否则,主线程将被阻塞,应用程序将无法响应用户。多线程是一个很大的课题。我建议你开始看Apple'sreference为了这。也可以引用agreatcourseoniTunesU(第11讲)。如果您只是想试一试,这里是您需要的实际代码(类似):dispat

ios - AVPlayer 边界时间观察器偶尔无法触发

我正在使用AVPlayer的-addBoundaryTimeOserverForTimes:queue:usingBlock:在我的视频中的特定时间执行一些代码(在这种情况下,我想要在我的视频达到其持续时间时取消隐藏按钮。代码如下:-(void)viewWillAppear:(BOOL)animated{..._player=[AVPlayerplayerWithURL:videoURL];AVPlayerLayer*newPlayerLayer=[AVPlayerLayerplayerLayerWithPlayer:_player];[newPlayerLayersetFrame:_

iOS - 调用 dispatch_async 时没有堆栈跟踪

我已经创建了一些示例代码来演示我的问题。-(void)test{void(^handler)(void)=^{NSArray*test=[NSArrayarray];[testobjectAtIndex:5];};handler=[handlercopy];dispatch_async(dispatch_get_main_queue(),handler);}当我调用测试方法时,我没有得到堆栈跟踪。调试器停在main.m并突出显示此行intretVal=UIApplicationMain(argc,argv,nil,NSStringFromClass([FantasyUniversalA

ios - 在自己创建的多个线程中执行核心数据操作以节省处理时间

我已经浏览了很多有关在多线程中执行核心数据操作的信息,但没有运气来解决我的问题。我的代码是这样的,我必须每十分钟下载一个csv文件,其中包含每个10秒的条目。这个文件一旦下载就会被解析,内容被保存在数据库中,然后文件被删除,当需要时,我可以从数据库中获取数据。现在,我现在有一个多月的大量现有内容,随着时间的推移可能会延长到数年,执行将新文件保存到数据库并将对象从核心数据提取到数组中的巨大任务已经使用单线程下载文件会导致大量处理时间。此外,应用中的View需要根据所有以前的数据进行调整(它们基本上是数量与时间的关系图)。我如何在多线程中实现这一目标并优化我的代码处理时间并将UI阻塞降至最