0

( myScrollView.delegate = self;) の下の行に警告があります: Local declaration of 'myScrollView' hides instance variable。私の質問は、なぜこれが起こっているのですか?

myViewController.h

@interface myViewController : UIViewController
{
    UIScrollView *myScrollView;
}

myViewController.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 に答える