4

@classこの単語を使用して、objective-c ヘッダー ファイルで未知のクラスを宣言できることは知っています。enumヘッダークラ​​ス内で不明を宣言する方法はありますか?

たとえば、コンパイルエラーを防ぐ方法はありますsomeEnumか?

#import <Foundation/Foundation.h>

@class UnknownClass;

@interface Foo

@property (nonatomic, strong) UnknownClass *someObject;
@property (nonatomic) UnknownEnum someEnum;

@end
4

2 に答える 2

5

はい、前方宣言できますenum:

enum things;

-pedanticただし、ISO 標準の一部であるとは思えないようなコンパイラ フラグを使用し始めると、問題が発生すると思います。また、クラスを前方宣言するのと同じように、サイズがわからないため、おそらくクラスへのポインターしか使用できないと思います。

個人的には、これを行う必要はなく、 を定義するヘッダー ファイルをインクルードすることを好みます(とにかく、ファイルをインクルードするよりも、 を宣言する方がクリーンenumだとは思いません)。enum

結論:気にしないでください

于 2013-02-22T11:57:59.100 に答える
0

何らかの理由で、 を宣言するヘッダーに#importorディレクティブを追加したくない場合は別のものとして入力してください。すべてのタイプは、いくつかの形式にかなり制限されています。類似していると宣言するだけです。0 以上になることがわかっている場合は、 を使用できます。負の数になることがわかっている場合は、 を使用します。プロパティの宣言には、これらのいずれかで十分です。#includeenumenumintNSUintegerNSInteger

つまり、名前付き列挙型は、列挙型メンバーの値を使用するか、その値を変数に代入する限り、typdef にすぎません。

別のオプションは#ifndef、同じタイプの定義を定義することです。

于 2013-02-22T11:57:47.727 に答える