0

C から Obj-C から Obj-C++ に移行しています。次の学期に向けて、C++ のコースを受講する予定です。うまくいけば、私はそれをそよ風で通り抜けます。

したがって、Obj-C では、プライベートとパブリックは、ヘッダー ファイルで宣言した内容によって決まります。ファイル内に@interfaceは、.hそのクラスで呼び出すことができるすべてのプロパティとインスタンス/クラス メソッドが配置されています。私が C++ について推測できることから、パブリックとプライベートは実際にはすべて.hファイルに書き出されているように感じます。私はこの仮定で正しいですか?

4

2 に答える 2

2

以前のObjective-Cコンパイラで@interfaceは、クラスの(多くの場合、ヘッダーファイルで宣言されている.h)には、すべてのデータメンバー(「ivars」)が含まれている必要がありました。新しいLLVMコンパイラでは、それらを@implementation.mファイル)にリストすることができます。

Objective-Cクラスの他の部分はそれほど制限されていません。.hメソッドは、、、.m両方、またはどちらでも宣言または定義できません。ヘッダーは通常、最も重要なメソッドを記述し、実装固有のものは省略します。 カテゴリ(言語の機能)は、クラスに新しいメソッドを追加すると同時に、それらを別の場所で宣言および定義する方法です。また、Objective-Cランタイムを使用して、考えられるほとんどすべてのことを実行するさまざまな方法がありますNSObject。たとえば、実行時にクラスにメソッドがあるかどうかを判断したり、メソッドを追加したりします。

于 2012-07-17T05:20:09.973 に答える
1

いいえ、さまざまな.hファイルにパブリックとプライベートを含めることはできません。obj-c / c ++についてはよくわかりませんが、それらを.hファイル(より大きなプログラムで推奨)に配置することを選択した場合は、.hファイルを#includeする必要があります。

于 2012-07-17T05:12:39.217 に答える