我正在使用下面的代码在我的.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新手,我不会从这里开始。我很感激任何帮助。
答案 0 :(得分:4)
您不必在方法之外初始化数组,以使其可以从所有方法访问。你应该做的是声明它作为一个属性并在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
方法检索它们。
答案 1 :(得分:0)
在标题中:
@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