49得票1回答
在dispatch_async中无法访问全局变量:"Variable is not Assignable (missing _block type specifier)"

在我的 dispatch_async 代码块中,我无法访问 全局变量。我收到了这个错误:Variable is not Assignable (missing _block type specifier)。NSString *textString; dispatch_async(dispat...

49得票3回答
在iOS中,Objective-C中的Block和Swift中的Closure有什么区别?

在教程中,它们都被描述为功能上相同的,即使闭包比块更容易,它也避免了块和内存管理的复杂性。我已经看过很多教程,但除了这些内容,我还没有理解 Swift 的“闭包”和 Objective-C 的“块”之间的区别。

47得票6回答
AFNetworking能否同步返回数据(在块内)?

我有一个使用AFJSONRequestOperation的函数,我希望在成功后只返回结果。你能给我指点一下方向吗?我对blocks和AFNetworking还不是很了解。 -(id)someFunction{ __block id data; AFJSONRequestOp...

47得票5回答
如何编写一个Objective-C的Completion Block

我处于这样一种情况,需要从我的视图控制器调用一个类方法,让它执行完其任务后再执行一些操作,但这些操作仅在该类方法完成后才能执行。 (我认为我需要的是一个完成块,如果我错了,请指出。) 这就是情况: 我正在使用 Parse.com 作为我的应用程序后端。当用户注册帐户时,他们在弹出窗口中输...

45得票2回答
在Objective-C中,将块引用作为实例变量

我想知道在Objective-C中是否可以将匿名函数(块)的引用存储为实例变量。 我知道如何使用委托、目标-动作等,但我不是在谈论这个。

44得票3回答
Objective-C:如何在集合枚举块中使用 `continue`?

如果我有一个NSArray并且我使用enumerateUsingBlock循环遍历数组中的元素,但在某些情况下我需要跳过循环体并继续执行下一个元素,是否有块中的等效continue,或者可以直接使用continue吗? 谢谢! 更新: 只是想澄清,我想做的是:for (int i = ...

42得票2回答
在块内部是否总是需要使用弱引用来引用self?

我在使用块内的 self 时感到困惑,我查阅了一些苹果文档,但仍然找不到正确答案。 有些人总是说在块内使用 weak self,但也有人说只有在复制的块中使用 weak self,不一定总是需要使用。 示例1:self.handler = ^(id response, NSError *e...

42得票3回答
iOS块和对self的强引用/弱引用

我对iOS中块中self的强引用和弱引用有疑问。我知道在块内正确地引用self的方法是在块外创建一个弱引用,然后在块内对该弱引用创建一个强引用,像这样:__weak typeof(self) weakSelf = self; dispatch_async(dispatch_get_global...

40得票2回答
如何在不使用dispatch_get_current_queue()的情况下验证自己是否正在运行给定的GCD队列?

最近我需要一个函数,能够保证在指定串行调度队列上对给定代码块的同步执行。由于有可能从该队列上已经运行的某些内容中调用这个共享函数,因此我需要检查这种情况以防止对同一队列的同步派发死锁。我使用以下代码来实现:void runSynchronouslyOnVideoProcessingQueue(...

40得票4回答
在从UIViewController调用的非保留完成块中引用self时,是否真的需要使用weakSelf/strongSelf技巧?

假设我有一个在UIViewController子类中的以下方法:- (void)makeAsyncNetworkCall { [self.networkService performAsyncNetworkCallWithCompletion:^{ dispatch_a...