Tôi đã cố tạo một biến tĩnh để lưu trữ một từ điển hình ảnh. Thật không may, cách tốt nhất tôi có thể tìm thấy để khởi tạo nó là để kiểm tra trong mỗi chức năng sử dụng biến. Vì tôi đang tạo biến này bên trong một thể loại, tôi không thể khởi tạo nó bên trong trình khởi tạo. Có cách nào để khởi tạo navigationBarImages không?Khởi tạo biến tĩnh trong loại Mục tiêu-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
Tôi không khuyến khích khởi tạo đối tượng Obj-c bằng NULL, bạn nên khởi chạy nó bằng nil! –
@DanielSanchez, trong khi tôi đồng ý, trên thực tế, nil chỉ là NULL được gán làm đối tượng. –
@FireLizzard nil tương đương với NULL cho một con trỏ tới một đối tượng. nil và NULL không nên hoán đổi cho nhau. NULL được định nghĩa khác với nil. nil được định nghĩa là (id) 0. NULL không phải là. –