0

下面的行 ( myScrollView.delegate = self;) 是一个警告:Local declaration of 'myScrollView' hides instance variable。我的问题是,为什么会这样?

我的视图控制器.h

@interface myViewController : UIViewController
{
    UIScrollView *myScrollView;
}

我的视图控制器.m

UIScrollView *myScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
myScrollView.delegate = self; // Warning: Local declaration of 'myScrollView' hides instance variable
4

2 回答 2

4

您的局部变量与实例变量具有相同的名称。将 myViewController.m 的第一行更改为:

myScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];

你不应该再收到错误了。

于 2013-01-27T22:20:24.840 回答
1

发生这种情况是因为您声明了一个与实例变量同名的局部变量。只要局部变量在范围内,对myScrollView变量的赋值就会分配给局部变量,而不是实例变量。实际上,看起来您的意图是分配实例变量myScrollView,而不是本地变量。这种情况下,需要去掉变量名前面的类型。

这只是一个警告,而不是错误。编译器告诉你,代码的这个区域可能会让你的代码的读者感到困惑(在你编写代码的那一刻起经过足够长的时间之后,你也会感到困惑)。重命名局部变量以提高代码的可读性是一个好主意。

于 2013-01-27T22:17:43.523 回答