37得票3回答
从NSArray中执行块?

我在思考,既然可以将块视为对象,如果我创建了两个块并将它们添加到NSArray中,是否有一种方法可以从该数组执行它们?int (^Block_001)(void) = ^{ return 101; }; int (^Block_002)(void) = ^{ return 202; }; NS...

37得票6回答
Objective-C块实现更好的异步控制流

我正在使用AFNetworking进行对Web服务的异步调用。其中一些调用必须被链接在一起,即调用A的结果被调用B使用,B的结果又被调用C使用,等等。 AFNetworking通过在创建操作时设置成功/失败块来处理异步调用的结果:NSURL *url = [NSURL URLWithStri...

36得票1回答
Objective-C 回调处理程序

我有一个回调函数,它已经可以正常工作,但我想知道如何向它传递值。 我的代码如下: @interface DataAccessor : NSObject { void (^_completionHandler)(Account *someParameter); } - (voi...

34得票3回答
如何使用Block简化回调逻辑?

假设我需要与一个提供协议并在操作完成时调用委托方法的类进行通信,如下所示:@protocol SomeObjectDelegate @required - (void)stuffDone:(id)anObject; - (void)stuffFailed; @end @interface...

34得票4回答
Objective-C块属性和Xcode代码补全

在Xcode 4中,是否可以定义一个Objective-C块属性并且仍然拥有完整的代码完成功能? 如果我使用typedef来定义块: typedef void (^CompletionBlock)(MyObject *myObj); 然后定义该属性: @property (nonato...

34得票5回答
为什么在高级应用程序中我应该选择GCD而不是NSOperation和blocks?

苹果的Grand Central Dispatch参考文档中这样说:   “……如果您的应用程序需要在系统的Unix级别上运行,例如,如果它需要操作文件描述符、Mach端口、信号或计时器。 GCD不仅限于系统级应用程序,但在将其用于更高级别的应用程序之前,您应该考虑通过Cocoa(通过NS...

34得票10回答
弱引用的通用typeof自身引用

我正在尝试使用 typeof 来创建一个弱引用以避免在块中出现保留周期。 当我第一次阅读相关资料时,似乎约定俗成的方法是使用 __block typeof(self) bself = self;,虽然这样编译可以通过,但是使用 __block 避免保留周期已经不再起作用了,现在应该使用 __...

33得票2回答
__block的替代语法是什么?

我对__block变量的语法有疑问。我知道可以在作用域内使用__block,以使其在块中不是只读的。但是在苹果文档中的某个地方,我看到了一种替代方法: "定义作用域内的变量默认情况下在块中是只读的。如果需要更改此类变量的值,则可以使用特殊语法: int count = 0; float...

33得票1回答
使用GCD实现FIFO串行队列

我正在为我工作的公司创建一个(网络)同步数组。虽然网络部分运作正常,但我遇到了一个问题。 我的愿望是使用dispatch_create_queue创建一个新的队列,向其中添加两个块,这些块不在主线程上运行,而是以串行方式运行,也就是说首先必须运行第一个块,然后是第二个块,并且永远不会并行运行...

29得票3回答
在ARC中,我们需要在UIAnimationBlocks中使用__weak self吗?

在UIAnimation块中,我们需要使用__weak self吗?如果我们没有将self声明为weak,它是否会创建内存泄漏的问题?[UIView animateWithDuration:animationDuration delay:0 ...