0

すべてのメソッドで使用する変数の値をどこに設定すればよいのか疑問に思っていました。たとえば、私の.hで次のように言います。 @property NSString *name;次に、それを.mで合成します。どこに値を割り当てるので、関数で、たとえば-(NSString *)changeUsername:(NSString *) changes、、-(void)deleteUsernameそのデータにアクセスできますか?

4

3 に答える 3

1

main()コマンドラインプログラムで最初に呼び出されるものです。そこで(またはどこかから呼ばれてmain())やってみませんか?

于 2012-06-01T18:38:04.993 に答える
1

プロパティについて話しているので、インスタンス化するクラスが必要です。そのクラスの指定された初期化子(-initまたは同様のもの)は、プロパティやインスタンス変数を設定するための適切な場所です。

Cocoa Touchアプリが一部の初期化タグを延期する唯一の理由-viewDidLoadは、ビューコントローラーが初期化時にビューをロードせず、一部のプロパティまたはivarがロードされるビューに関連しているためです。ビューがロード(または作成)されるまで、これらのものは明らかに設定できないため、-viewDidLoadこれらの種類のものを設定するのに最適な場所になります。

于 2012-06-01T18:43:14.133 に答える
0

さて、あなたはあなたのクラスの初期化子でそうすることができます、そして実際、これはC++または多分Javaでのアプローチでしょう。Objective-cでは、通常、レイジーインスタンス化を使用します。これを行うのに最適な場所は、そのプロパティのゲッターです。

誰かがプロパティに値を割り当てると、セッターが呼び出され、すべてが正常になります。誰かが値を要求し、それがまだ設定されていない(nilである)場合は、オブジェクトを作成するか、ゲッターでデフォルト値を割り当てることができます。

// Override accessor for name
- (NSString*)name
{
    if (!_name) {
        _name = @"unknown";
    }

    return _name;
}

アクセサメソッドは、インスタンス変数に直接アクセスする必要がある唯一の場所です。

于 2012-06-01T18:39:17.710 に答える