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