如何摆脱“本地声明隐藏实例变量”警告?

时间:2014-09-06 18:15:58

标签: objective-c xcode uiviewanimation

我想在我的应用中添加一个简单的图片动画,但它没有显示。我得到了这个黄色错误,并且说出了"本地宣布'图像'隐藏实例变量"

在以下地方: [ images addObject:[UIImage imageNamed:[imageNames objectAtIndex:i]]];     }

// Normal Animation
UIImageView *animationImageView = [[UIImageView alloc] initWithFrame:CGRectMake(60, 95, 86, 193)];
animationImageView.animationImages = **images**;

我的代码:

- (void)viewDidLoad
{
    [super viewDidLoad];

    // Load images
    NSArray *imageNames = @[@"1.png", @"2.png", @"3.png", @"4.png",
                            @"5.png", @"6.png"];

    NSMutableArray *images = [[NSMutableArray alloc] init];
    for (int i = 0; i < imageNames.count; i++) {
        [images addObject:[UIImage imageNamed:[imageNames objectAtIndex:i]]];
    }

    // Normal Animation
    UIImageView *animationImageView = [[UIImageView alloc] initWithFrame:CGRectMake(60, 95, 86, 193)];
    animationImageView.animationImages = images;
    animationImageView.animationDuration = 0.5;

    [self.view addSubview:animationImageView];
    [animationImageView startAnimating];

}

1 个答案:

答案 0 :(得分:1)

警告意味着声明一个局部变量

NSMutableArray *images = [[NSMutableArray alloc] init];
//              ^^^^^^

使用您在类声明中用于实例变量的名称。实例变量的名称在类声明后以花括号列出:

@interface MyController : UIViewController {
    NSMutableArray *images; // <<== The "competing" declaration
}
...
@end

您可以重命名这两个变量中的一个来解决问题,例如:

NSMutableArray *imageArray = [[NSMutableArray alloc] init];

另一种可能性是摆脱其中一个声明。确保您需要本地变量和实例变量。如果其中一个足够,删除另一个也将解决问题。