Desde que comencé a trabajar en aplicaciones iOS y el objetivo C, me han desconcertado mucho las diferentes ubicaciones donde se podrían declarar y definir variables. Por un lado tenemos el enfoque tradicional de C, por el otro tenemos las nuevas directivas ObjectiveC que agregan OO encima de eso. ¿Podrían ayudarme a comprender las mejores prácticas y las situaciones en las que me gustaría usar estas ubicaciones para mis variables y quizás corregir mi comprensión actual?
Aquí hay una clase de muestra (.h y .m):
#import <Foundation/Foundation.h>
// 1) What do I declare here?
@interface SampleClass : NSObject
{
// 2) ivar declarations
// Pretty much never used?
}
// 3) class-specific method / property declarations
@end
y
#import "SampleClass.h"
// 4) what goes here?
@interface SampleClass()
// 5) private interface, can define private methods and properties here
@end
@implementation SampleClass
{
// 6) define ivars
}
// 7) define methods and synthesize properties from both public and private
// interfaces
@end
- Mi comprensión de 1 y 4 es que esas son declaraciones y definiciones basadas en archivos de estilo C que no comprenden en absoluto el concepto de clase y, por lo tanto, deben usarse exactamente como se usarían en C.Las he visto utilizado para implementar singletons basados en variables estáticas antes. ¿Hay otros usos convenientes que me falta?
- Mi opinión al trabajar con iOS es que los ivars se han eliminado casi por completo fuera de la directiva @synthesize y, por lo tanto, se pueden ignorar en su mayoría. ¿Es ese el caso?
- Con respecto a 5: ¿por qué querría declarar métodos en interfaces privadas? Mis métodos de clase privada parecen compilarse bien sin una declaración en la interfaz. ¿Es principalmente por legibilidad?
¡Muchas gracias, amigos!