草庐IT

ios - 主线程在 viewDidLoad 中的并发队列上执行 dispatch_async,或者在方法内执行事务

因此,在一些帮助下,我更加清楚嵌套GCD在我的程序中是如何工作的。原帖在:MakingsureI'mexplainingnestedGCDcorrectly但是,您不需要阅读原始帖子,但基本上这里的代码在后台运行数据库执行并且UI是响应式的:-(void)viewDidLoad{dispatch_queue_tconcurrencyQueue=dispatch_queue_create("com.epam.halo.queue",DISPATCH_QUEUE_CONCURRENT);dispatch_queue_tserialQueue=dispatch_queue_create("c

ios - 如何确定主线程上正在运行什么+减慢用户界面?

我在我的应用中加入了一个新的数据加载功能。它旨在将大型数据库的内容从移动设备传输到后端并进行处理。在我在此管道中运行的所有函数中,函数的全部内容都在dispatch_async这分派(dispatch)到一个非主线程。我还用日志验证了这些正在工作。流水线中的每个函数都脱离了主线程。然而,我正在经历UI卡住。问题:找出主线程上有什么以及它正在做什么/正在等待什么的最佳方法是什么?有没有可能让非主线程做太多事情而实际上影响了主线程? 最佳答案 您应该使用Instruments分析您的应用。TimeProfiler(确保使用“Record

objective-c - 使用从 NSOperation 子类 (ARC) 到主线程的 block 回调

这个问题类似于thisquestion引入了自动引用计数。我有一个NSOperation子类,它接受一个block参数,该block参数旨在作为对主(UI)线程的回调。我的初衷是在后台执行一些操作,然后使用dispatch_async和主队列执行回调。原前提:@interfaceMySubclass:NSOperation{@protecteddispatch_block_t_callback;}-(id)initWithCallback:(dispatch_block_t)callback;@end@implementationMySubclass-(void)main{//Dost

ios - CoreData 子上下文、NSFetchedResultsController 和主线程

正在关注thisexcellentpost通过OlivierDrobnik,我实现了CoreData专家MarcusS.Zarra提出的三层CoreData堆栈:与此图和我的代码的唯一区别是我只使用一个临时背景MOC,以避免在多个临时MOC中插入对象时出现重复。这是我的上下文初始化代码:#pragmamark-NSManagedObjectContexts+(NSManagedObjectContext*)privateManagedObjectContext{if(!_privateManagedObjectContext){//SetupMOCattachedtoPSC_priva

iphone - iOS - 是否应用程序 :didFinishLaunchingWithOptions execute in main thread?

我想知道iOS应用委托(delegate)的application:didFinishLaunchingWithOptions:方法是否从主线程中执行?最后,我想知道将UI代码放入此方法是否安全,以及我是否应该继续阻止代码(如网络交互)。谢谢。 最佳答案 是的,是在主线程上执行。 关于iphone-iOS-是否应用程序:didFinishLaunchingWithOptionsexecuteinmainthread?,我们在StackOverflow上找到一个类似的问题:

objective-c - 我可以在 -dealloc 中调用 [self retain] 吗?或者,如何确保 dealloc 发生在主线程上?

这是我的情况。这很复杂,所以请耐心等待。我有一个View类,我们称它为MyView。它创建一个加载指示器subview,然后启动将加载数据的后台操作。它还创建了一个block,后台队列操作完成后将在主队列中排队。该block通过添加另一个subview(UITextView)和已加载的数据来准备View。当然,要做到这一点,block必须具有对View的引用。所以后台操作保留了block,block保留了view。到目前为止和我在一起吗?有时MyView的实例会在后台队列操作完成之前从其superView中删除。有时调用block的主队列操作在后台队列操作被完全清理之前被完全清理。在这

ios - 为什么 NSOperationQueue 在主线程上处理大量任务时比 GCD 或 performSelectorOnMainThread 更快?

例如,我有100次for循环。并且需要更新UIImageView,最后2个方法一样慢。为什么?它们有什么区别?//fastest[[NSOperationQueuemainQueue]addOperationWithBlock:^{[btnThumbsetImage:[UIImageimageWithData:data]forState:UIControlStateNormal];[scrollViewaddSubview:btnThumb];}];//slowlydispatch_async(dispatch_get_main_queue(),^{[btnThumbsetImage:

ios - 从 objective-c 中的主线程返回值

我正在开发一个需要在后台线程中构建一些图像的应用程序。在此过程中的某个时刻,我需要从UITextView获取文本。如果我调用UITextview.text,我会收到警告,我的辅助线程不应该纠缠UIKit一切都很好,但我需要文本,但我无法找到从主线程获取所述文本的合理方法。我的问题是:有没有人想出一个从后台线程获取UI元素属性的好方法,或者从一开始就避免这样做的好方法?我把这个东西放在一起,它成功了,但感觉不太对:@interfaceSelectorMap:NSObject@property(nonatomic,strong)NSArray*selectors;@property(non