Использование ошибок необъявленного идентификатора
Я получаю ошибки "использования необъявленного идентификатора" в моем файле.m с приведенным ниже кодом и, похоже, не могу решить эту проблему.
NSArray *imageViews = [NSArray arrayWithObjects:img1, img2, img3, img4, img5, img6, img7, img8, img9, img10, img11, img12, img13, img14, img15, img16, img17, img18, img19, img20, img21, img22, img23, img24, img25, img26, img27, img28, img29, img30, img31, img32, img33, img34, img35, img36, img37, img38, img39, img40, nil];
В моем файле.h у меня есть 40 изображений, все со ссылками на выходы:
@property (weak, nonatomic) IBOutlet UIImageView *imgX;
где Х - число от 1 до 40 В моем.m-файле NSArray *imagesViews работает нормально, пока он внутри метода, но я не могу объявить его вне метода, чтобы он был доступен для всех методов. Как новичок в Objective-C, я не знаю, куда идти. Буду признателен за любую помощь.
2 ответа
Вам не нужно инициализировать массив вне метода, чтобы сделать его доступным для всех методов. Вместо этого вы должны объявить его как свойство и инициализировать его внутри viewDidLoad
метод.
в .h
файл:
@property (strong, nonatomic) NSArray *imageViews;
@property (weak, nonatomic) IBOutlet UIImageView *img1;
// ...
в .m
файл:
@synthesize imageViews, img1, img2, ...
// ...
- (void)viewDidLoad
{
[super viewDidLoad];
// ...
self.imageViews = [NSArray arrayWithObjects:self.img1, self.img2, ... , nil];
}
Также обратите внимание, что, поскольку у вас есть 40 изображений, вам, вероятно, следует избегать объявления свойства для каждого из них. Вы можете назначить им теги, а затем получить их, используя метод viewWithTag
,
В шапке:
@interface MyClass : NSObject {
NSArray *imageViews;
}
@end
В реализации:
@implementation MyClass
- (id) init
{
self = [super init];
if (self != nil) {
imageViews = [[NSArray arrayWithObjects:img1, nil] retain];
}
return self;
}
// now you can use imageViews also from other methods
- (void) dealloc
{
[imageViews release];
[super dealloc];
}
@end