25得票1回答
在Xcode中,有没有一种简单的方法来自动完成块变量?

通常情况下,Xcode自动完成对我来说非常有效,但是当通过带有block和block变量的方法签名时,我总是不得不重新输入变量类型和名称。以下是一个示例: 动画块很容易完成,因为它没有块变量,因此在开始编写代码之前,我只需要输入“{}”。对于第二个补全块,我必须输入“^(BOOL fin...

24得票5回答
Cocoa块作为强指针与复制的区别

我曾多次使用块作为指针,并且我对其有强引用。 我听说应该使用复制,但是,使用块作为指针而不是原始对象的含义是什么? 编译器从未抱怨我不应该使用它。@property (nonatomic, strong) MyBlock block; 但应该使用@property (nonatomic, ...

23得票2回答
在iOS 5及以上版本的ARC环境下,是否可以在块中传递[self anyFunction]而不使用__weak对象?

在不使用self的__weak对象的情况下,是否可以在块中传递[self anyFunction]? 以下是系统框架中有效的示例代码:[UIView animateWithDuration:0.8 animations:^{ //Do animationStuff ...

23得票2回答
在一个代码块中避免“表达式结果未使用”的警告

以下代码在块内部的赋值操作上返回了一个未使用的表达式警告。这段代码并不是很实用,但是在被排除的部分中还有很多代码需要在特定的队列上运行。__block NSNumber *pageId=nil; dispatch_sync(_myDispatchQueue, ^{ int val; ...

23得票1回答
如果我有嵌套的dispatch_async调用,会发生什么?

这可能是一个愚蠢的问题,但我需要问一下并为自己澄清一下。 要将一个块提交到队列以进行执行,请使用函数dispatch_sync和dispatch_async。它们都接受队列和块作为参数。dispatch_async立即返回,异步运行块,而dispatch_sync阻止执行,直到提供的块返回为...

22得票1回答
如何创建一个返回块的 Objective-C 方法?

-(NSMutableArray *)sortArrayByProminent:(NSArray *)arrayObject { NSArray * array = [arrayObject sortedArrayUsingComparator:^(id obj1, id obj2) ...

22得票3回答
Grand Central Dispatch(GCD)与CoreData

我在我的应用程序中使用Grand Central Dispatch (GCD)来完成一些繁重的工作。该应用程序使用Core-Data进行数据存储。这是我的情况(以及相关的问题):dispatch_queue_t main_queue = dispatch_get_main_queue(); d...

22得票1回答
如何从完成块中检索返回值?

能否在主线程上运行完成块? 例如,我有一个方法返回一个值:- (int)test { /* here one method is called with completion block with return type void */ [obj somemethodwi...

22得票3回答
递归块和ARC中的保留循环

编辑2: 不。建议的答案是关于异步调用。我想要并需要同步调用,就像普通的标准递归调用一样。 编辑: 当......__unsafe_unretained void (^unsafe_apply)(UIView *, NSInteger) ; 编译时没有警告或错误,但在运行时,将NULL存...

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

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