9

私はDataClass.hを持っています

@interface DataClass : NSObject
{
}

enum knownTypes
{
    type1 = 0,
    type2,
    type3,
    UnknownType = -1
};

.mファイルでknownTypesを指定し、他のクラスからアクセスする方法はありますか?

これは私が作成しているUtilクラスであるため、このクラスの値にアクセスするためのオブジェクトを作成したくありません。

たとえば、TestClass.mでは、DataClass.hをインポートすることで、列挙値をtype1、type2 ..として使用できますが、DataClass.mで列挙データを宣言すると、それらの列挙値を使用できませんでした。

4

2 に答える 2

18

これはクラスとは何の関係もありません。これはCの機能です。

ファイルに型または列挙型を定義する場合は、必要な場所.hにインポート(#import)することで使用できます。

.cまたはファイルで列挙型を定義する場合.m、ファイル内でその定義の後の要素のみが列挙型を使用できます。

あなたの場合、2つの異なるファイルに同じ列挙型が必要なようです。使用法は、その列挙型を別のファイルで定義し、たとえば、それをknownTypes.h使用してそのファイルを2つのファイルにインポートすることです。DataClass.mTestClass.m

TestClassがテスト目的の場合、現在の組織はOKです。列挙型はで宣言され、DataClass.h両方DataClass.mTestClass.mインポートされDataClass.hます。

于 2012-04-06T08:24:27.627 に答える
2

いいえ、ヘッダーではなくソースファイルで定義した場合、enumそのソースファイルのみがで使用される識別子を利用できますenum。「プライベート」のままにして、複数のソースファイルで使用できるようにする場合は、別のヘッダーに配置し、この別のヘッダーを両方のソースファイルに含めます。

于 2012-04-06T07:22:46.327 に答える