16得票1回答
在NSDictionary中,块被释放(ARC)

我试图通过一个方法将传递给我的类的Block保留下来,以便稍后调用。然而,我遇到了问题,无法维护对它的引用。 我想到的显而易见的方法是将它添加到一个ivar集合中,所有这些集合都应该维护对其内容的强引用。但是当我尝试将其取回时,它为nil。 代码非常简单:typedef void (^Da...

8得票1回答
在iOS上运行时检查块的可用性

我需要在运行时测试块的可用性,以便处理 iOS 3 的向后兼容性。有什么建议吗? 编辑: 到目前为止,我正在使用 if (!NSClassFromString(@"NSBlockOperation")) {...} 看起来还不错...

27得票3回答
Objective C - 什么是枚举数组的最快和最有效的方法?

编辑 我阅读了一些关于块和快速枚举和GCD等方面的文章。@Bbum撰写了许多有关GCD和块的文章,他说块枚举方法始终比快速枚举等效方法更快。您可以在这里阅读他的推理。 虽然这是一次有趣的、知识性的对话,但我同意那些认为它确实取决于手头的任务的人。 我有一些任务要完成,我需要它们快速、廉价、高...

9得票1回答
iOS 5 块对象 ARC 桥接转换

这个问题参考了这个问题:如何使用块简化回调逻辑? 我的头文件有这些typedefs。 typedef void (^StuffDoneBlock)(NSDictionary * parsedData); typedef void (^StuffFailedBlock)(NSError * ...

7得票1回答
将Swift 2闭包转换为Objective-C块

我正在尝试在Swift 2中构建一个Objective-C块,以便将其添加到NSArray中,如下所示: typealias CompletionBlock = () -> Void let aBlock:CompletionBlock = { print("Hello wo...

17得票3回答
iOS自动释放池块

我在阅读苹果公司的关于内存管理的文档时,看到了自动释放池块,这让我开始思考。 Any object sent an autorelease message inside the autorelease pool block is released at the end of the bl...

9得票1回答
在C语言中,^{ <stmts..> }()是什么意思?

在阅读LLVM静态分析器文档时,我遇到了一个奇怪的运算符。 ^{ int y = x; }(); 我知道我可以在函数内定义一个嵌套块,像 { ... },但我们甚至可以调用它吗?此外,我从未见过在花括号块前面放置^的任何用法。我认为这是GCC支持的一种语言扩展,并用关键词“匿名函数”...

12得票4回答
我应该在嵌套的块中使用weakSelf吗?

我正在尝试在Objective C中正确地避免使用块时出现保留循环,并不确定是否存在嵌套块的问题。如果我编写一个类似这样的简单块:[self doSomethingWithBlock:^{ [self doSomethingElse]; }]; 编译器提示我可能会导致保留循环,我将其更...

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

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

8得票2回答
iOS的完成处理程序块在哪个线程中调用?

例如,在GKScore的reportScoreWithCompletionHandler方法中(详见文档),假设你调用了 [score reportScoreWithCompletionHandler:^(NSError *error) { // do some stuff that ...