Objective-C中的静态块变量

12

是否可以拥有一个“块类型”的静态变量?

我有一个只在静态方法中执行操作的类。在执行这些方法时,我调用statusChangedBlock。为此,我创建了该类的共享实例,并使用其单个块属性。我想知道是否可以拥有一个静态块变量;这样我就不必创建一个只具有一个属性的实例来通知我的状态已更改。

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

…这个问题听起来有点愚蠢,我不知道为什么。希望有人能指出其中的原因。


你可以声明它为静态的,但不能创建为静态的。这是函数的作用。 - Bryan Chen
@BryanChen 我无法弄清如何声明它为静态变量;同时也不确定你所说的“function for”是什么意思。你能给一个简单的例子吗? - user1244109
2个回答

11

声明一个块类型的静态变量

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

2
静态的MyBlockType myAssignedBlock = ^ReturnType(ArgumentType arg1,ArgumentType2 arg2){...do something...};可以正常工作。 - Wil Macaulay

0

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


谢谢!如果您能提供一些最简单的示例,那将非常有帮助。 - user1244109

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接