Использование ошибок необъявленного идентификатора - PullRequest
0 голосов
/ 03 апреля 2012

Я получаю ошибки "использования необъявленного идентификатора" в моем файле .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;

, где X - это число от 1-40.В моем .m-файле NSArray * imagesViews работает нормально, пока он внутри метода, но я не могу объявить его вне метода, чтобы он был доступен для всех методов.Как новичок в Objective-C, я не знаю, куда идти.Буду признателен за любую помощь.

Ответы [ 2 ]

4 голосов
/ 03 апреля 2012

Вам не нужно инициализировать массив вне метода, чтобы сделать его доступным для всех методов.Вместо этого вы должны объявить как свойство и инициализировать его в методе 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.

0 голосов
/ 03 апреля 2012

В шапке:

@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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...