草庐IT

ios - GCD取消异步 block ?

我有在表格View单元格中加载图像的常规代码dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND,0),^{NSImage*image=file.image;dispatch_async(dispatch_get_main_queue(),^{imageView.image=image;});});问题是当我滚动得太快时,我可以看到最后一个block在同一个imageView上多次触发。这看起来真的很奇怪。有什么办法可以在安排新操作之前取消所有以前为一个imageView安排的操作(假设它

ios - Objective-C:方法的返回值和Completion block ,它们是如何执行的?

我在iPhone中制作了一个摄影应用程序,我有这3个类:ViewController、CaptureManager和ImgProcessor。ViewController:-(IBAction)takePic:(id)sender{images=[captureManagertakeMultipleImagesWithCompletion:^{//SomeUIrelatedcode..[imgProcessorprocess:images];}];}捕捉管理器:-(NSArray*)takeMultipleImagesWithCompletion:^(void)completionHa

iOS 如何向 UIWebView loadRequest :? 添加完成 block

我正在使用UIWebView,并且已经在使用webViewDidFinishLoad:方法和一个在加载完成后执行的可选block:-(void)webViewDidFinishLoad:(UIWebView*)webView{[superwebViewDidFinishLoad:webView];//...bunchofothercodeif(self.webViewFinishLoadBlock!=nil){self.webViewFinishLoadBlock();}}现在我正在处理一个更加复杂的加载页面和重定向序列,这使得上面的逻辑不够充分。我不想将自己注册为dummyWebVi

ios - 从未调用过 PFFacebookUtils loginWithPermissions block

我正在使用facebooklogin测试一个应用程序。我制作了一个按钮,当我点击它时,Facebook页面出现,输入密码后它消失了。问题是来自[PFFacebookUtilsloginWithPermissions]的block从未被调用。这样我就无法执行我的segue。我想我已经在Parse和Facebook上进行了所有配置。所有的类都在PrefixHeader中导入Appdelegate方法已使用developer.facebook.com文档中的信息更新。前缀头应用委托(delegate)我的RootViewController类 最佳答案

ios - 在 block 中使用局部变量名称 "self"是否正确?

我发现构造__strongtypeof(self)self=weakSelf。它允许删除NSAssert宏self捕获,但我怀疑以这种方式使用它是否正确?__weaktypeof(self)weakSelf=self;self.signupBlock=^{__strongtypeof(self)self=weakSelf;NSLog(@"%d",self.property)NSAssert((self.property>5),@"Somemessage");}请多多指教。对不起,我不得不先说使用__strongtypeof(self)strongSelf=weakSelf;构造结果以w

iphone - 使用 Grand Central Dispatch,我如何检查是否有 block 已经在运行?

我正在使用GCD从Internet进行一些后台加载。除了一点点缺陷外,这很好用。在我的应用程序中,我有3个选项卡,当单击任何选项卡时,GCD开始为适当的选项卡进行后台加载。如果用户决定从第一个选项卡转到第二个选项卡(当GCD已开始为第一个选项卡下载数据时),然后再次返回到第一个选项卡。GCD将启动另一个后台线程(即使第一个后台线程尚未完成数据下载)。那么有没有办法检查后台线程当前是否正在运行?因此,如果用户选择非常快速地来回切换选项卡(出于某种原因),它不会启动多个后台线程。 最佳答案 如果你想防止两个相同类型的block同时运行,

ios - applicationDidBecomeActive 是否 : block the main thread?

在我的应用委托(delegate)的applicationDidBecomeActive:中,我检查用户登录状态的有效性,如果失败则抛出一个登录页面。此检查涉及网络调用,我担心在网络不佳的情况下它可能会阻塞主UI,从而导致应用挂起。当应用程序激活时,从计时的角度来看会发生什么?applicationDidBecomeActive:的内容是否在主线程上阻塞/运行?我应该异步执行此网络调用(例如使用GCD)吗? 最佳答案 applicationDidBecomeActive方法像所有UIKit方法一样在主线程上被调用。您必须始终确保在后

multithreading - 是否有关于如何在没有 block 的情况下使用 NSOperationQueue 的教程?

我的应用程序必须在iOS3.2上运行,并且-addOperationWithBlock等方法只能在>4.0中使用。但是NSOperationQueue从iOS2.0开始可用,所以我想尝试一下“旧方法”。有谁知道一个方便的教程,它展示了如何在没有block的情况下使用NSOperationQueue的基础知识? 最佳答案 调用操作非常简单。这些操作允许您使用某些对象参数(可选)向特定对象发送消息。给定您要调用的方法:-(void)doSomething{NSLog(@"Didit!");}你可以做这样的事情来实现它://Getorcr

ios - block 指针变量 'block' 在被 block 捕获时未初始化

我正在使用看到的代码here定期执行代码:#defineDELAY_IN_MS1000__blockdispatch_time_tnext=dispatch_time(DISPATCH_TIME_NOW,0);void(^block)(void)=^//Getwarninghere!{next=dispatch_time(next,DELAY_IN_MS*1000000L);//Domyperiodicthing...dispatch_after(next,dispatch_get_main_queue(),block);}这会导致警告(见标题)。我对这个警告有两个问题:这是什么意思?

ios - 带有完成 block 的 AFNetwork 2.0 队列?

我如何在AFNetwork2.0上创建队列并为添加的操作完成时设置完成处理程序?目前我有这个ASINetworkQueue*queue=[[ASINetworkQueuealloc]init];[queuesetDelegate:self];[queuesetQueueDidFinishSelector:@selector(refeshInterface)];ASIFormDataRequest*request=[ASIFormDataRequestrequestWithURL:url];[queueaddOperation:request];ASIFormDataRequest*re