VIDTAKER.COM

Q&A

C#のコードを理解し、Objective - Cのへの移植に関するヘルプ


[OK]を、私は他の誰かのCによって書かれたこのプロトタイプを持って#と私はObjective - Cに入れてしようとしている。 #まだ、私はすべてを知っていないCと正式な経験がない今、私はそれについてはまだありません。私は理解して最初に何を3つの変数がありますが、私は4番目と5番目の行は(c_data)やっていることで問題に実行している。 4番目のそれを定義するメソッドを宣言し、5または何かが起こっている?ご協力いただきありがとうございます!

public class c_data {
    public double value;
    public int label;
    public int ID;
    public c_data() { }
    public c_data(double val) {
        value = val;
    }
}



7 Replies

1)

4番目と5番目の行はC言語でのコンストラクタです#。彼らは相当Objective - Cで[c_data alloc] initプロセス]チェーン]にあります。 C#のオーバーロードコンストラクタはかかるパラメータに基づいてすることができます。 Objective - Cで2つの異なる初期化メソッドを持つこれは等価です:

@interface CData : NSObject
{
   double value;
   int label;
   int ID;
}

@property double value;
@property int label;
@property int ID;

-(id) init;
-(id) initWithValue:(double)value;

@end

2)

4行は、パラメータのコンストラクタと5行目はparameterfullコンストラクタです。


3)

4と5はc_dataのインスタンスを初期化に使用されるコンストラクタですときには、1つを開く新しい。


4)

4番目のは、5番目のパラメータdouble値として取得し、クラスのコンストラクタを定義するパラメータを取得し、いかなるアクションを持つクラスのコンストラクタを定義して渡された値にクラス内部のメンバ変数の値を設定しますvalが。


5)

4回と5行の両方のコンストラクタです。

4行が1つのこの例ではすべての変数を初期化しません"デフォルト"のコンストラクタです。

5行目のコンストラクタは、変数をパラメータに値の名前を設定渡された


6)

最初のc_dataは、デフォルトのデフォルト値(値 - >は0.0、ラベル - > 0、IDは - > 0)と第2 c_dataは、インスタンスへの値のフィールドを設定するコンストラクタです構造体のフィールドを初期化しない- argsコンストラクタです渡されたパラメータにvalとそのデフォルト値に他のフィールド。私が説明した方法をこれら2つのコンストラクタの呼び出しは、インスタンスを初期化されます。


7)

私は可能性があります場合は、むしろObjective - Cのクラスのこと次の両方のメソッドと同様です:

  • (id)を初期化;
  • (id)をinitWithNumber:(NSNumber *)の数。

コンストラクタと初期化子は類似であり、彼らはほんの少し違って見える。