我在類內部有一個靜態塊變量。我怎樣才能聲明一個屬性或實例選擇器來返回或發送該塊給調用者?返回指向塊的指針
這是我的靜態塊:
static NSResultComparison(^myBlock)(id obj1, id obj2);
我在類內部有一個靜態塊變量。我怎樣才能聲明一個屬性或實例選擇器來返回或發送該塊給調用者?返回指向塊的指針
這是我的靜態塊:
static NSResultComparison(^myBlock)(id obj1, id obj2);
這將是最好的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
如果塊類型將被多次使用,這很有用,但我不確定這實際上是OP所要求的。 –
不一定。大多數情況下,我在屬性或方法中都有自定義塊,我不打擾typedef,因爲塊簽名只打印一次或兩次。 Typedefs污染了全局類型名稱空間,而且一次性塊沒有任何意義。 –
謝謝,typedef爲我做了。我試圖聲明像+(^ NSComparisonResult(id obj1,id obj2))getComparisonBlock,但它不會採取。使用typedef它可以做 –
你能澄清你的問題是什麼?只是聲明你的屬性/方法將塊作爲返回類型有什麼問題?或者你不知道那個語法?塊類型的未命名形式爲'(NSResultComparison(^)(id,id))'。 –
@KevinBallard我同意澄清是必要的。我已經更新了我的答案,以顯示爲所有對選擇器的調用返回的類的靜態塊變量的情況。 – Joe