J'espérais que quelqu'un pourrait me aider à comprendre la syntaxe des blocs lorsqu'ils sont utilisés comme membres d'une classe. J'ai un code qui fonctionne en fait très bien:iOS 4 - L'utilisation de blocs en tant que membre d'une classe
@class Structure;
typedef void (^StructureDeleteCallback)(Structure *);
@interface StructureListDelegate : NRFCTableDelegate
{
StructureDeleteCallback _structureDeleteCallback;
}
@property (nonatomic, copy) StructureDeleteCallback structureDeleteCallback;
@end
Cela fonctionne, mais je voudrais comprendre la syntaxe de l'instruction typedef
; et si oui ou non il est réellement nécessaire d'utiliser typedef. Ce que j'ai lu dit qu'il est recommandé d'utiliser typedef
dans cette situation car cela rend le code beaucoup plus clair; mais j'ai été incapable de le compiler du tout en essayant de le faire sans typedef
. Ma compréhension de typedef était que la syntaxe était essentiellement:
typedef [actual type] [new name for type];
Tels que:
typedef double CLLocationDegrees;
Mais la syntaxe de ma déclaration typedef
ne correspond pas. Mes questions sont les suivantes:
- Comment la syntaxe de ma déclaration
typedef
si différent des autrestypedef
déclarations/qu'est-ce que la syntaxe j'utilise signifie réellement au compilateur? - Est-il possible de avoir un bloc en tant que membre d'une classe sans utiliser
typedef
?
Ah! Je n'ai pas réussi à le faire fonctionner sans utiliser typedef parce que je n'avais pas réalisé que la syntaxe pour définir l'iVar serait complètement différente. Je pensais que je devrais encore avoir [nom de fichier] [iVarName]; – GendoIkari
Donc, juste pour préciser une dernière chose ... que ce soit dans le typedef, ou tout simplement déclarer un bloc, est-il fondamentalement juste que les blocs ont une syntaxe différente pour eux déclarant que d'autres types faire? Le compilateur voit juste le symbole^et sait que le nom de la variable est après le ^, par opposition à après le nom du type comme il est avec int x ;? Merci! – GendoIkari
@Gendolkari Vous l'avez! :) –