2011-12-07 106 views
1

我在類內部有一個靜態塊變量。我怎樣才能聲明一個屬性或實例選擇器來返回或發送該塊給調用者?返回指向塊的指針

這是我的靜態塊:

static NSResultComparison(^myBlock)(id obj1, id obj2); 
+1

你能澄清你的問題是什麼?只是聲明你的屬性/方法將塊作爲返回類型有什麼問題?或者你不知道那個語法?塊類型的未命名形式爲'(NSResultComparison(^)(id,id))'。 –

+0

@KevinBallard我同意澄清是必要的。我已經更新了我的答案,以顯示爲所有對選擇器的調用返回的類的靜態塊變量的情況。 – Joe

回答

5

這將是最好的typedef您的塊。

//interface.h 
typedef NSResultComparison (^ComparisonBlock)(id obj1, id obj2); 

@interface ... 
... 

-(ComparisonBlock) getComparisonBlock; 

@end 

//implementation.m 
//Here is your static block implementation 
static ComparisonBlock myStaticBlock = ^(id obj1, id obj2) 
{ 
    ... 
    return result; 
}; 

@implementation ... 

-(ComparisonBlock)getComparisonBlock 
{ 
    return myStaticBlock; 
} 

@end 
+0

如果塊類型將被多次使用,這很有用,但我不確定這實際上是OP所要求的。 –

+0

不一定。大多數情況下,我在屬性或方法中都有自定義塊,我不打擾typedef,因爲塊簽名只打印一次或兩次。 Typedefs污染了全局類型名稱空間,而且一次性塊沒有任何意義。 –

+0

謝謝,typedef爲我做了。我試圖聲明像+(^ NSComparisonResult(id obj1,id obj2))getComparisonBlock,但它不會採取。使用typedef它可以做 –