2013-11-22 43 views
10

是否有可能具有“块类型”的静态变量?Objective-C中的静态块变量

我有一个只做静态方法的东西的类。执行这些方法后,我打电话给statusChangedBlock。只是为了创建该类的共享实例,并使用它的单个块属性。我不知道是否有可能有一个静态块变量;所以我不必创建一个具有单个属性的实例,只是为了通知我的状态已更改。

我知道有一个NSNotification的选项,但我不喜欢使用它,有一些罕见的例外。

......这个问题听起来很愚蠢,我不知道为什么。我希望有人指出。

+0

你可以声明为静态,而不是创建静态的。它是什么功能 –

+0

@BryanChen我无法弄清楚如何声明它是静态的;也不确定你的意思是“功能”。你能举一个简单的例子吗? – user1244109

回答

11

声明块类型的静态变量

typedef ReturnType (^MyBlockType)(ArgumentType, ArgumentType2); 
static MyBlockType myblock; 
static MyBlockType myblock2; 

static ReturnType (^myblock)(ArgumentType, ArgumentType2); 
+0

作品,它会真的帮助,谢谢! – user1244109

+2

'静态MyBlockType myAssignedBlock =^ReturnType(ArgumentType arg1,ArgumentType2 arg2){...做某事...};'工作正常。 –

0

块类型变量实际上是一个指针,类似于一个对象。你可以有一个静态块变量,但是你必须在运行时赋值,使用dispatch_once块。

+0

谢谢!如果你提供了一些最简单的例子 – user1244109