由於您CompletionBlock
s爲(1)相同,並且(2)不依賴於任何特定的一組類型,考慮將這個定義在從兩個ClassA.h
和ClassB.h
文件包括一個共同的報頭:
CompletionAction.h
typedef void(^CompletionAction)();
ClassA.h
#include "CompletionAction.h"
@interface ClassA
-(void)runWithCompletionBlock:(CompletionAction)onDone;
@end
ClassB.h
#include "CompletionAction.h"
@interface ClassB
-(void)runSomethingElseWithCompletionBlock:(CompletionAction)onDone;
@end
另一選擇爲簡單塊那樣是定義它們的類型「內聯」作爲方法聲明的一部分,因此避免了一個typedef
,像這樣:
ClassA.h
@interface ClassA
-(void)runWithCompletionBlock:(void(^)())onDone;
@end
ClassB的.h
@interface ClassB
-(void)runSomethingElseWithCompletionBlock:(void(^)())onDone;
@end
將'typdef'放入頭文件(例如'Constants.h'),並將其導入到'ClassA'和'ClassB'中。你將能夠在兩個類中使用相同的類型。 – holex