如何在单独的文件中声明一组Objective-C块,并将该文件包含在我的代码中



i有一组Objective-C指定的块,我需要在多个ViewControllers上进行。这些命名的块将通过dispatch_async()执行。

我不想多次声明它们,而是想声明一次(例如在NSObject子分类.h/.m组合中),然后像任何标准子类一样 #import

我该怎么做?这让我发疯。我已经尝试了几种方法,但是解决方案不断逃避我。请帮助!

谢谢Shaan

在您的.h文件中,以下声明您的块变量:

#import <Cocoa/Cocoa.h>
extern int (^intReturningBlock)(int foo, int bar);
extern NSString* (^stringReturningBlock)(int foo, int bar);

和在您的.m文件中,创建块变量:

#import "MyBlocks.h"
int (^intReturningBlock)(int foo, int bar) = ^int(int foo, int bar) {
    return foo + bar;
};
NSString* (^stringReturningBlock)(int foo, int bar) = ^NSString*(int foo, int bar) {
    NSNumber* tmp = @(foo + bar);
    return [tmp description];    
};

我的直觉是,您缺少的部分是声明中的extern。该网站是一个有用的参考:http://goshdarnblocksyntax.com

最新更新