150得票10回答
Objective-C将块作为参数传递

我应该如何将一个 Block 传递给一个函数或方法? 我尝试使用 - (void)someFunc:(__Block)someBlock,但无济于事。 例如,一个 Block 的类型是什么?

148得票5回答
不使用typedef声明块方法参数

在Objective-C中,是否可以指定一个方法块参数而不使用typedef?这一定是可能的,就像函数指针一样,但我无法想出获胜的语法而不使用中间的typedef:typedef BOOL (^PredicateBlock_t)(int); - (void) myMethodTakingPre...

104得票7回答
iOS 6中用于完成块的dispatch_get_current_queue()的替代方法是什么?

我有一个接受块和完成块的方法。第一个块应该在后台运行,而完成块应该在调用方法的任何队列中运行。 至于后者,我之前一直使用dispatch_get_current_queue(),但似乎在iOS 6或更高版本中已被弃用了。那我应该使用什么替代方案呢?

88得票6回答
使用块代替performSelector:withObject:afterDelay:

我经常想在未来的几微秒内执行一些代码。目前,我是这样解决的:- (void)someMethod { // some code } 而这个:[self performSelector:@selector(someMethod) withObject:nil afterDelay:0.1...

82得票4回答
__weak引用和__block引用有什么区别?

我正在阅读Xcode的文档,这里有一些令我困惑的内容:__block typeof(self) tmpSelf = self; [self methodThatTakesABlock:^ { [tmpSelf doSomething]; }]; 以下内容摘自官方文档: 块会对其...

80得票3回答
如何在Objective-C中将块存储在属性中?

我想将Objective-C块存储在属性中以备后用。我不确定如何做,所以我进行了一些谷歌搜索,关于这个主题的信息非常少。但最终我还是找到了解决方案,我认为值得与其他像我一样的新手分享。 最初我认为我需要手动编写属性来使用Block_copy和Block_release。 幸运的是,我发现块...

79得票3回答
我自己的方法需要一个自定义完成块

我刚刚发现了完成块: completion:^(BOOL finished){ }]; 我需要做什么才能让我的方法接收一个完成块?

74得票4回答
为什么运行时 nil / NULL 块会导致总线错误?

我开始大量使用块并很快发现,nil 块会导致总线错误:typedef void (^SimpleBlock)(void); SimpleBlock aBlock = nil; aBlock(); // bus error 这似乎与Objective-C通常忽略对空对象发送消息的行为相违背:NS...

73得票6回答
从块中调用[self methodName]?

我刚遇到了blocks,我觉得它们正是我想要的,除了一个问题:是否可以在block内调用一个方法[self methodName]? 这就是我想做的:-(void)someFunction{ Fader* fader = [[Fader alloc]init]; void ...

72得票3回答
实现一个方法,该方法接受一个块作为回调函数

我想编写一个类似于这样的方法:+(void)myMethodWithView:(UIView *)exampleView completion:(void (^)(BOOL finished))completion; 基本上,我已经从Apple的UIView类方法中剥离了语法:+ (void)...