Pregunta

Yo estaba esperando que alguien podría ayudar a entender la sintaxis de los bloques cuando se utiliza como miembros de una clase. Tengo un código que realmente funciona muy bien:

@class Structure;
typedef void (^StructureDeleteCallback)(Structure *);

@interface StructureListDelegate : NRFCTableDelegate
{
    StructureDeleteCallback _structureDeleteCallback;
}

@property (nonatomic, copy) StructureDeleteCallback structureDeleteCallback;

@end

Esto funciona, pero me gustaría entender la sintaxis de la instrucción typedef; y si es o no es realmente necesario para utilizar typedef.

Lo que he leído dice que se recomienda el uso de typedef en esta situación, ya que hace el código mucho más claro; pero no he podido conseguirlo para compilar en absoluto cuando se trata de hacer esto sin typedef. Mi comprensión de typedef fue que la sintaxis era básicamente:

typedef [actual type] [new name for type];

Tales como:

typedef double CLLocationDegrees;

Sin embargo, la sintaxis de mi declaración typedef no coincide con esto. Así que mis preguntas son:

  • ¿Cómo puede la sintaxis de mi typedef declaración sea tan diferente de otra declaraciones typedef / lo que hace la sintaxis que estoy usando en realidad significan para el compilador?
  • ¿Es posible tener un bloque como un miembro de una clase sin utilizar typedef?
¿Fue útil?

Solución

Me he preguntado una pregunta a lo largo de las líneas de suyo aquí: referencias a bloque como ejemplo vars en Objective-C

Ver mis respuestas aquí y aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top