2013-03-09 22 views
38

C/Obj-C'de, bu typedef int MYINT; gibi bir yazım hatası var.Bir blokta yazım denetimi nasıl yapılır

bir blok için typedef Doing - typedef void (^MyBlock) (int a);

Şimdi, MyBlock kullanabilirsiniz.

Yapmamalı - typedef void (^MyBlock) (int a) MyBlock;#define benzeri?

Sözdizimi nasıl çalışır?

cevap

59

"Bloklar Programlama Konular" bölümündeki Declaring a Block Reference bakınız:

Blok değişkenleri bloklarına başvuruları tutar. Bir işlev için bir işaretçi bildirmek için kullandığınız gibi benzer sözdizimini kullanarak bildirdiğinizde, * yerine^kullandığınızdan .

Böylece

typedef void (^myBlock) (int a); 

typedef void (*myFunc) (int a); 

bir işlev işaretçisi beyan aynı sözdizimi kullanılarak bir bloğun bir türünü tanımlar.

Bakınız örn İşlev işaretçileri hakkında daha fazla bilgi için Understanding typedefs for function pointers in C. böyle olmalı bloklar için bir tür oluşturmak "Bloklar Programlama Konular" dan da

17

:

typedef returnType (^blockName)(argument1, argument2, ...) 
Aşağıda

çok basit pratik örnektir:

typedef float (^MyBlockType)(float, float); 
MyBlockType AddTwoFloat = ^(float a, float b) {return a + b;}; 
MyBlockType MultiplyTwoFloat = ^(float a, float b) {return a * b;}; 
float c = AddTwoFloat(1, 2); //c = 3 
float d = MultiplyTwoFloat(1, 2); //d = 2 
+0

Basit ve net Kod pasajı – Jasmeet

İlgili konular