2013-11-22 16 views
10

Ist eine statische Variable eines "Blocktyps" möglich?Statische Blockvariable in Objective-C

Ich habe eine Klasse, die nur Sachen in statischen Methoden tut. Nach der Ausführung dieser Methoden rufe ich statusChangedBlock. Nur dafür erstelle ich eine gemeinsam genutzte Instanz der Klasse und verwende ihre einzelne Blockeigenschaft. Ich frage mich, ob es möglich ist, eine statische Blockvariable zu haben; Ich müsste also keine Instanz mit einer einzigen Eigenschaft erstellen, nur um zu wissen, dass sich mein Status geändert hat.

Ich weiß, es gibt eine Option von NSNotification, aber ich mag es nicht, mit einigen seltenen Ausnahmen zu verwenden.

... diese Frage klingt irgendwie dumm, ich kann nicht sagen, warum. Ich hoffe, dass jemand darauf hinweist.

+0

erklären Sie es statisch erklären kann, aber es ist nicht statisch zu erstellen. es ist welche Funktion für –

+0

@BryanChen ich kann nicht herausfinden, wie man es statisch erklärt; auch nicht sicher was meinst du mit "funktion für". Kannst du ein einfaches Beispiel geben? – user1244109

Antwort

11

eine statische Variable von Blocktyp

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

oder

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

funktioniert, danke! – user1244109

+2

'static MyBlockType myAssignedBlock =^ReturnType (ArgumentTyp arg1, ArgumentType2 arg2) {... tue etwas ...};' funktioniert gut. –

0

Eine Blocktypvariable ist eigentlich ein Zeiger, ähnlich einem Objekt. Sie können eine statische Blockvariable haben, aber Sie müssen ihren Wert zur Laufzeit perhapse mit einem dispatch_once Block zuweisen.

+0

Danke! Es würde wirklich helfen, wenn Sie ein einfaches Beispiel – user1244109

Verwandte Themen