我有一个方法,我想这样称呼:
void (^someblock)()=^{
NSLog(@"I want to know");
};
[Item getCacheAndCallback:self.menuItemID andCallback:someblock];
我如何在头文件中声明这个?我试过了
+(void)getCacheAndCallback:(int)menuItemID andCallback:(^());
但是说“预期的类型”。我认为这应该是
类型的空白thx
答案 0 :(得分:4)
+(void)getCacheAndCallback:(int)menuItemID andCallback:(void(^)(void))completionBlock;
答案 1 :(得分:1)
将块类型直接放入方法签名可能会因为您发现而变得混乱。我建议您使用typedef
使其更清洁:
typedef void(^VoidBlock)();
现在您可以将块声明编写为:
VoidBlock someBlock = ^{ NSLog(@"I want to know"); };
并将您的方法声明为:
+ (void) getCacheAndCallback:(int)menuItemID andCallback:(VoidBlock)callBack;
注意: typedef
不会引入新类型,只是简写。这意味着,例如,您可以使用完整类型(甚至是具有相同完整类型的不同typedef
)声明块,并将其用作VoidBlock
。
答案 2 :(得分:1)
块语法很奇怪。每当我碰巧遗忘某些东西时,我都会将此链接放在引用中:fuckingblocksyntax.com