¿Es posible definir una propiedad de bloque Objective-C pero aún tener compleción de código completo en Xcode 4?Propiedad de bloque Objective-C con finalización de código Xcode
Si utilizo un typedef para definir el bloque:
typedef void (^CompletionBlock)(MyObject *myObj);
y luego definir la propiedad:
@property (nonatomic, copy) CompletionBlock completionBlock;
y luego @synthesize
la propiedad no consigo código completo finalización al llamar al colocador. Xcode usará typedef y debido a esto, la finalización del código no utiliza la sintaxis completa del bloque completa con los parámetros del bloque, sino que utiliza el typedef.
Si defino un prototipo método en el encabezado que utiliza la sintaxis completa de bloque en lugar del typedef:
@property (nonatomic, copy) void (^completionBlock)(MyObject *myObj);
y luego utilizo @synthesize
, el colocador siempre se acerca a la utilización de la finalización de código completa pero fundamentalmente la sintaxis que deja fuera los nombres de los parámetros:
[self setCompletionBlock:(void (^)(MyObject *)) { ... }
Por último, si trato de @synthesize
y a continuación, sustituir la implementación incubadora o poner el prototipo en el encabezado:
- (void)setCompletionBlock:(void (^)(MyObject *myObj))completionBlock {...}
Una advertencia se eleva indica que el tipo de propiedad no coincide con el tipo de acceso. No importa cómo intente solucionar la sintaxis, no puedo definir una propiedad de bloque y un setter que tenga la sintaxis completa para completar el código. ¿Puedo tomar mi torta y comerla también?
Gracias!
Nos recuerda la pregunta ... ¿por qué 'typedef' en absoluto? Para funcionalidad reducida y una línea de código semi redundante? Tal vez esta es la forma en que Apple dice ... ___ "¡No hagas eso!" ___ ?? –