在不同的类中使用CompletionBlock

时间:2014-06-11 16:27:19

标签: objective-c block

我有A类和B类。我希望每个人都使用完成块,所以我创建了

typedef void(^CompletionBlock)()
两个.h文件中的

这给了我一个重新定义的错误。如何在多个文件中使用该名称?我宁愿不必使用

typedef void(^ACompletionBlock)();

typedef void(^BCompletionBlock)();

在各自的.h文件中。我没有使用typedef的经验。

1 个答案:

答案 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
相关问题