2017-03-08 44 views
0

我有一套Objective-C命名塊,我需要跨越多個viewControllers。這些命名的塊將通過dispatch_async()執行。如何在單獨的文件中聲明一組Objective-C塊並將該文件包含在我的代碼中?

而不是多次宣佈他們,我想宣佈他們一次(如在一個NSObject subclassed .h/.m組合),然後#import他們像任何標準的子類。

我該怎麼做?這讓我瘋狂。我嘗試了幾種方法,但解決方案不斷逃避我。請幫忙!

感謝 陝

回答

0

在你.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

+0

是的,這個伎倆!它現在有效。我確實錯過了外部。非常感謝,impcc! –

相關問題