12得票1回答
如何修复“在此块中强烈捕获'block'可能会导致保留周期”的问题

我正在处理这段代码,它会在网络上执行一些漫长的异步操作,并在完成后触发一个完成块,在该块中进行某些测试,如果变量获得特定值,那么另一个漫长的操作应立即开始:-(void) performOperation { void(^completionBlock) (id obj, NSErr...

7得票3回答
使用递归块时出现EXC_BAD_ACCESS错误

我试图使用块来创建递归。它一开始运行良好,但最终会崩溃并显示一个无法访问的异常。这是我的代码: BOOL (^Block)(Square *square, NSMutableArray *processedSquares) = ^(Square *square, NSMutableArray...

19得票4回答
Objective-C库中的回调使用选择器或块。

问题 我们正在使用Objective-C开发一个自定义的EventEmitter inspired消息系统。对于侦听器提供回调,我们应该要求使用blocks还是selectors?为什么? 作为使用第三方库的开发人员,您更喜欢使用哪种方式?哪种方式最符合苹果的发展轨迹、指南和实践? 背景...

480得票8回答
“__block”关键字是什么意思?

__block 关键字在 Objective-C 中的确切含义是什么?我知道它允许你在块内修改变量,但我想知道... 它具体告诉编译器什么? 它还有其他作用吗? 如果这是它唯一的作用,那么为什么需要它呢? 文档中是否有相关内容?(我找不到)

12得票2回答
Objective-C中的静态块变量

是否可以拥有一个“块类型”的静态变量? 我有一个只在静态方法中执行操作的类。在执行这些方法时,我调用statusChangedBlock。为此,我创建了该类的共享实例,并使用其单个块属性。我想知道是否可以拥有一个静态块变量;这样我就不必创建一个只具有一个属性的实例来通知我的状态已更改。 我...

22得票3回答
在Objective-C块中,BOOL返回类型出现问题

我在使用块(Block)中BOOL返回类型时遇到了一个奇怪的问题。定义如下:typedef BOOL (^BoolBlock)(void); ...这段代码通过测试:BoolBlock foo = ^{ return YES; }; ...但是这个无法编译:BoolBlock bar = ^{...

7得票2回答
Objective-C:如何将对象作为块参数传递给期望其基类的方法?

如果我有以下对象: @interface Simple : NSObject @end @interface Complex : Simple @end 还有另一个类似的对象: @interface Test : NSObject +(void) doSomething:(v...

11得票2回答
如何在使用块和Xcode时将源代码格式化为新行中的大括号?

有没有办法让Xcode不重新格式化已经格式化的代码,或者有没有像uncrustify这样的工具可以格式化使用块的源代码?对于Objective-C中的块,代码变得难以阅读。一个解决方案是编写块定义并将花括号放在新行上,就像这样:dispatch_async(dispatch_get_globa...

7得票2回答
如何在NSDictionary类的enumerateObjectsUsingBlock块中使用停止条件?

我希望在我的类中创建一个方法,类似于NSDictionary类的enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)方法。 我对块的使用有一些了解,但我无法弄清如何创建enumerateObjectsUsingBlo...

9得票3回答
在初始化器中当块处于变量捕获状态

考虑以下内容: id observer = [[NSNotificationCenter defaultCenter] addObserverForName:MyNotification object:nil q...