2017-10-17 3 views
0

私はObjective-Cヘッダファイル内にCのような構造体を定義したいと思いますが、_ivarsしか含まれていませんが、このヘッダファイルだけが対応する@implementationではないからです。それも可能ですか? (私もこれは単純な記述定義であるため、@implementationを追加するために、ヘッダファイルincludersを強制したくない)@interfaceプロパティは@implementationのみ必要ですか?

好きのユーザーはそれを拡張し、に、より多くのデータメンバを追加するので、私はそれが@interface定義になりたいですそれはそうすることができる(再び、_ivarsのみ)。しかし、あなたが何かを考えるなら、他の提案が働くかもしれません。

+0

構造体またはクラス? – Willeke

+0

@Willeke他の人が望むのであれば、他の人がカテゴリーを拡張できるように、クラスにしたいと思っています。 – sramij

+0

[Cで構造体を拡張できますか?](https://stackoverflow.com/questions/7370533/can-i-extend-a-struct-in-c) – Willeke

答えて

2

はい、クラスが@property宣言をバックアップストレージを含む(実行時に実現させるようにコンパイラによってコンパイルされたクラスに対して宣言@implementationがなければならない。

コンパイルすると、そのクラスができません拡張された追加の@propertiesが自動的にバックアップされます(カテゴリを使って拡張することもできますが、ストレージのためにあなた自身で行い、クラスのカテゴリ拡張はお勧めできません)。

+0

ありがとうございました。それは純粋にC-structスタイルであるが、 "インターフェース"に包まれている場合には、私はまだ "実装"なしでそれを行うことができるということです。 (ところで、私はカテゴリを拡張しても構いません) – sramij

+0

サブクラスにプロパティを追加できます。 – Willeke

+0

@Willekeクラス(別名インターフェイス)を使用する際の問題は、実装を追加する必要があることです。ヘッダーファイルのみを用意する予定であるため、これを回避しようとしています。 – sramij

関連する問題