1

私はapple obj-cガイドを勉強していますが、クラスタイプを理解するのに問題があります、とドキュメントは言います

クラス定義は、一種のオブジェクトの仕様です。クラスは、事実上、データ型を定義します。型は、クラスが定義するデータ構造 (インスタンス変数) だけでなく、定義に含まれる動作 (メソッド) にも基づいています。クラス名は、C で型指定子が許可されている場所ならどこでもソース コードに表示できます。たとえば、sizeof 演算子の引数として使用できます。

int i = sizeof(Rectangle);

また、sizeof 演算子は c メソッドではありませんか?

また、これが何を意味するのかを明確にしてください

Objects are always "typed by" a pointer.
4

2 に答える 2

0

申し訳ありませんが、おそらく obj-c よりも簡単なものから始める必要があります。

OOP (オブジェクト指向プログラミング) では、基本型 (int、long、char、場合によっては string など) から始めます。次に、基本型のプロパティとメソッドを含むクラスがあります (C の構造体と同様)。

通常、クラスはインスタンス化できます。つまり、そのタイプのオブジェクトを作成します。例えば

class Person {

    int age;

    string name;
    string surname;

    void printFullName() {

        Console.WriteLine(name + " " + surname);

    }

}

あなたが書くなら

var myperson = new Person();

タイプ Person の新しいオブジェクトを作成しました。

myperson.printFullName();

そのメソッド printFullName() にアクセスできます

この例では、 sizeofは C の単項演算子 (++ や -- など) であり、Rectangleは型、クラスです。
ところで、その例は少し紛らわしいので、別の例を検索してください。

オブジェクトは常にポインターによって「型指定」されます。

作成するオブジェクトは、その型を定義するポインターによって類型化されることを意味します。
うーん、説明するのは難しいです:)

このコードがあなたに役立つことを願っています:)

于 2012-06-07T07:35:41.080 に答える
0

はい sizeof() は c からのものです。Objective-C は c の拡張であるため、c で実行できることはすべて Objective-C でも実行できます。

オブジェクトは常にポインターによって「型指定」されます。

これは、オブジェクトのインスタンスへのポインターによって常にオブジェクトを参照することを意味します。これを実際にデモンストレーションするために使用するので、C ++に精通していることを願っています...

// C++ "typed by pointer"
Object *obj = new Object();
obj->member = NULL;

// Obj-C "typed by pointer"
NSObject *obj = [[NSObject alloc] init];
obj.property = nil;


// C++
Object obj;
obj.member = NULL;

// Obj-C
NSObject obj; // THIS WILL NOT COMPILE

それが理にかなっていることを願っています。

編集

「入力者」を明確にするために、元の回答のコメントを修正しました。– クリス・ヘイズ 8 分前

「静的型付け」または「強力な型付け」は、オブジェクトまたはデータ型の操作に制限を課します。「弱い型付け」はそうではなく、演算子のオーバーロードを許可します。– クリス・ヘイズ 5 分前

「ジェネリック型付け」の例は、抽象クラスの参照です (ポリモーフィズムを参照してください)。これは、継承されたオブジェクトが抽象オブジェクト型としてコンパイラに宣言された「ジェネリック」ポインターによって参照できるという点で、「弱い型付け」です。(注:これらは異なるため、「タイピング」とクラス/データ型を混同しないようにしてください) – Chris Heyes 49秒前編集

于 2012-06-07T07:45:46.887 に答える