Desde que comecei a trabalhar em aplicativos iOS e objetivo C, fico muito intrigado com os diferentes locais onde se pode declarar e definir variáveis. Por um lado temos a abordagem C tradicional, por outro temos as novas diretivas ObjectiveC que adicionam OO em cima disso. Vocês poderiam me ajudar a entender as melhores práticas e situações em que eu gostaria de usar esses locais para minhas variáveis e talvez corrigir meu entendimento atual?
Aqui está um exemplo de classe (.h e .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
e
#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
- Meu entendimento de 1 e 4 é que essas são declarações e definições baseadas em arquivo de estilo C que não têm nenhuma compreensão do conceito de classe e, portanto, devem ser usadas exatamente como seriam usadas em C. Eu as vi usado para implementar singletons baseados em variáveis estáticas antes. Há outros usos convenientes que estou perdendo?
- Minha opinião sobre o trabalho com o iOS é que ivars quase foram completamente eliminados fora da diretiva @synthesize e, portanto, podem ser quase totalmente ignorados. É esse o caso?
- Com relação a 5: por que eu iria querer declarar métodos em interfaces privadas? Meus métodos de classe privada parecem compilar bem sem uma declaração na interface. É principalmente para facilitar a leitura?
Muito obrigado, pessoal!