L'initialisation d'une variable statique dans Objective-C catégorie

J'ai essayé de créer une variable statique pour stocker un dictionnaire d'images. Malheureusement, la meilleure façon que j'ai pu trouver de l'initialiser à vérifier dans chaque fonction qui a utilisé la variable. Depuis que je suis la création de cette variable à l'intérieur d'une catégorie, je ne peux pas juste de réagir à l'intérieur de l'initialiser. Est-il plus propre façon d'initialisation navigationBarImages?

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) {
        imageName=@"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
Je déconseille à l'initialisation d'un Obj-c objet avec des valeurs NULL, vous devez l'initialiser à néant!
alors que je suis d'accord, en réalité, nul est juste NUL jeté comme un objet.
néant est l'équivalent de la valeur NULL pour un pointeur vers un objet. nul et NUL ne devraient pas être interchangeables. La valeur NULL est différemment définie que le néant. nulle est définie comme (id)0. NULL n'est pas.
nshipster.com/nil

OriginalL'auteur Casebash | 2010-01-12