我有A类和B类。我希望每个人都使用完成块,所以我创建了
typedef void(^CompletionBlock)()
两个.h文件中的。
这给了我一个重新定义的错误。如何在多个文件中使用该名称?我宁愿不必使用
typedef void(^ACompletionBlock)();
typedef void(^BCompletionBlock)();
在各自的.h文件中。我没有使用typedef
的经验。
答案 0 :(得分:0)
由于您的CompletionBlock
是(1)相同且(2)没有绑定到任何特定的类型集,因此请考虑将此定义放在ClassA.h
和{{1}包含的公共标头中} files:
CompletionAction.h
ClassB.h
ClassA.h
typedef void(^CompletionAction)();
ClassB.h
#include "CompletionAction.h"
@interface ClassA
-(void)runWithCompletionBlock:(CompletionAction)onDone;
@end
像这样的简单块的另一个选择是将它们的类型“inline”定义为方法声明的一部分,从而避免使用#include "CompletionAction.h"
@interface ClassB
-(void)runSomethingElseWithCompletionBlock:(CompletionAction)onDone;
@end
,如下所示:
ClassA.h
typedef
ClassB.h
@interface ClassA
-(void)runWithCompletionBlock:(void(^)())onDone;
@end