我维护一个调度队列作为一个属性与我的视图控制器。 我在我的视图控制器的init方法中创build了一个这个队列,并为一些后台任务重复使用了几次。 在ARC之前,我是这么做的: @property (nonatomic, assign) dispatch_queue_t filterMainQueue; 在init中: if (filterMainQueue == nil) { filterMainQueue = dispatch_queue_create("com.myQueue.CJFilterMainQueue", NULL); } 但是在ARC之后,我不确定这是否应该“分配”,还是应该是“强”还是“弱”。 ARC转换器的脚本没有改变任何东西,但是我不确定这个队列是否可以在使用的时候释放一个细微的错误。 使用ARC时,3种属性之间的区别是什么?对于调度队列,最有效的是什么?
我有一些麻烦的unit testing一些大的中央调度代码与内置的Xcodeunit testing框架SenTestingKit。 我设法解决了我的问题。 我有一个unit testing,build立一个块,并试图在主线程上执行它。 但是,该块从未实际执行,所以testing挂起,因为它是一个同步调度。 – (void)testSample { dispatch_sync(dispatch_get_main_queue(), ^(void) { NSLog(@"on main thread!"); }); STFail(@"FAIL!"); } testing环境是什么造成这个挂起?
我正在写一个适度复杂的iOS程序,需要多个线程的一些较长的操作(parsing,连接到networking等)。 不过,我很困惑dispatch_get_global_queue和dispatch_queue_create之间有什么不同。 我应该使用哪一个,能给我一个简单的解释,说明一般的区别? 谢谢。
如果我有一个串行队列,我怎么能从主线程中告诉它立即停止执行并取消所有的任务?
我是Grand Central Dispatch(GCD)和Core Data的初学者,我需要您的帮助才能将CGD与Core Data一起使用,以便在向Core Data添加40.000条logging时不会lockingUI。 我知道CD是不是线程安全的,所以我必须使用另一个上下文,然后保存数据和合并上下文,据我所知,从一些文章。 我还做不到的东西,把它们拼凑在一起。 所以,在我的代码中,我需要你的帮助。 我有: /*some other code*/ for (NSDictionary *memberData in arrayWithResult) { //get the Activities for this member NSArray *arrayWithMemberActivities = [activitiesDict objectForKey:[memberData objectForKey:@"MemberID"]]; //create the Member, with the NSSet of Activities [Members createMemberWithDataFromServer:memberData andActivitiesArray:arrayWithMemberActivities andStaffArray:nil andContactsArray:nil inManagedObjectContext:self.managedObjectContext]; } 我怎样才能转换这个工作的背景,然后,当完成保存,保存数据和更新用户界面,而不会阻止用户界面,同时保存40.000对象?
最长的时间,我认为asynchronous是在后台线程上运行的东西的同义词,同步意味着在主线程(阻止UI更新和交互)。 我知道不在昂贵的动作的主线程上运行是因为它不允许UI动作发生,因为主线程被占用,但为什么同步麻烦? 但是,由于引起了我的注意,您可以在主线程上进行asynchronous调用,并在后台线程上进行同步调用。 我总是听到人们说不要同步或在主线程上使用昂贵的调用,因为它会阻止用户的用户界面。 这两个单独的问题,我应该确保我不这样做? 有什么区别?
我学习了iOS编程,这要归功于Stanford的CS193p课程(在iTunes U上)以及Big Nerd Ranch的iOS编程书籍。 在这两者中,他们都build议使用dispatch_async() , dispatch_get_main_queue()等来处理线程和并发操作。 但是,在WWDC 2012关于构build并发UI的会议上,演讲者build议使用NSOperationQueue 。 dispatch_*()和NSOperationQueue之间有什么NSOperationQueue ,有没有什么理由(技术,性能,风格或其他),我应该使用它们之一? NSOperationQueue仅仅是一个NSOperationQueue的Objective-C包装,还是有更多的呢?
我在修改线程内的视图时遇到问题。 我试图添加一个子视图,但需要大约6秒或更长时间来显示。 我终于搞定了,但我不知道如何。 所以我想知道为什么它的工作和以下方法有什么区别: //this worked -added the view instantly dispatch_async(dispatch_get_main_queue(), ^{ //some UI methods ej [view addSubview: otherView]; } //this took around 6 or more seconds to display [viewController performSelectorOnMainThread:@selector(methodThatAddsSubview:) withObject:otherView waitUntilDone:NO]; //Also didnt work: NSNotification methods – took also around 6 seconds to display //the observer was in the viewController I wanted to […]
任何人都可以用真正清楚的用例来解释GCD中dispatch_sync的用途是什么? 我不明白在哪里,为什么我不得不使用这个。 谢谢!
我正在阅读有关“调度队列的内存pipe理”的苹果文档: 即使您实施垃圾收集应用程序,您仍然必须保留并释放您的派遣队列和其他派遣对象。 Grand Central Dispatch不支持用于回收内存的垃圾回收模型。 我知道ARC不是一个垃圾收集器,但我想确保我不需要dispatch_retain和dispatch_release我的dispatch_queue_t