0

私はObjective-Cプログラミングに非常に慣れていないので、いつも戸惑う質問があります。なぜ、このようにヘッダーファイルで変数を宣言する必要があるのでしょうか。

@interface MyViewController : UIViewController
{
    NSString *myString;
}

ここで(.mファイルで)宣言しないのはなぜですか?

@implementation MyViewController

- (void)viewDidLoad
{
    NSString *myString;
}
4

2 に答える 2

4

最初の宣言は、すべてのインスタンス メソッドで使用できるインスタンス変数です。2 番目は one メソッドに対してローカルです。

ただし、.m ファイルでインスタンス変数を宣言することは可能です。

@implementation MyViewController {
    NSString *myString;
}

実際、公開する必要のないインスタンス変数を宣言するには、これが推奨される方法です。他のクラスで使用できるようにする必要があるものだけを .h ファイルで宣言します。

于 2013-02-25T00:17:51.797 に答える
0

ここでは、2 つの異なる質問が行われています。

簡単に言うと、ヘッダー ファイル (.h) は、実装について何も知らなくても、クラスの内容を確認するための他のすべての公開ゲートウェイです。ヘッダー ファイルには、他のクラスに知らせたいすべての情報 (つまり、パブリック メソッド、プロパティ) を含める必要があります。

実装ファイルで簡単に宣言できますが、他のクラスはそれらについて知りません。

第二に、あなたが提供した例NSString *myString;では、viewDidLoad メソッドを入れました。これは、そのような変数がそのメソッドのスコープでのみ使用できることを意味します。他にアクセスできるものはありません。

于 2013-02-25T00:22:06.933 に答える