Estaba intentando crear una variable estática para almacenar un diccionario de imágenes. Desafortunadamente, la mejor manera que pude encontrar para inicializarlo fue verificar cada función que usó la variable. Como estoy creando esta variable dentro de una categoría, no puedo inicializarla dentro del inicializador. ¿Hay alguna manera más clara de inicializar navigationBarImages?Inicializando una variable estática en la categoría Objective-C
static NSMutableDictionary *navigationBarImages = NULL;
@implementation UINavigationBar(CustomImage)
//Overrider to draw a custom image
- (void)drawRect:(CGRect)rect
{
if(navigationBarImages==NULL){
navigationBarImages=[[NSMutableDictionary alloc] init];
}
NSString *imageName=[navigationBarImages objectForKey:self];
if (imageName==nil) {
[email protected]"header_bg.png";
}
UIImage *image = [UIImage imageNamed: imageName];
[image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
//Allow the setting of an image for the navigation bar
- (void)setImage:(UIImage*)image
{
if(navigationBarImages==NULL){
navigationBarImages=[[NSMutableDictionary alloc] init];
}
[navigationBarImages setObject:image forKey:self];
}
@end
No recomiendo inicializar un objeto Obj-c con NULL, debe inicializarlo con nulo. –
@DanielSanchez, aunque estoy de acuerdo, en realidad, nada es solo NULL lanzado como un objeto. –
@FireLizzard nil es el equivalente de NULL para un puntero a un objeto. nil y NULL no deben ser intercambiables. NULL se define de manera diferente que nil. nil se define como (id) 0. NULL no es. –