6

Event.h というファイルがあります。

@interface Event : NSObject

FOUNDATION_EXPORT NSString * const KP_STATUS_NEW
FOUNDATION_EXPORT NSString * const KP_STATUS_APPROVED
FOUNDATION_EXPORT NSString * const KP_STATUS_DELETED

@property (nonatomic, strong) NSString * name;
@property (nonatomic, strong) NSString * description;
@property (nonatomic, strong) NSString * status

私の SDK を使用するプログラマーが、STATUS特に Event オブジェクトのステータスを設定するときに文字列にアクセスできるようにしてほしいと思います。上記のように FOUNDATION_EXPORT を使用する必要がありますか?

プログラマーができるように

Event * myEvent = [[Event alloc] init];
myEvent.status = STATUS_NEW;

?

それはobjective-cでそれを行う方法ですか?

ちなみに、KP はプロジェクトの一般的なプレフィックスです。ステータスの前に KP などを付ける必要がありますか? 標準は何ですか?

4

1 に答える 1

3

externではなく、単に使用できますFOUNDATION_EXPORT(とにかく定義されていると思います)。

Objective-C には名前空間がないことを考えると、共通のプレフィックスを使用することは良い考えEventです。これは、非常に一般的な名前であると呼ばれるクラスに対して 2 倍になります。

だから、このようなものは、私にはOKに見えます:

#import "KPEvent.h"

KPEvent * myEvent = [[KPEvent alloc] init];
myEvent.status = KP_STATUS_NEW;

またはさらに良い:

myEvent.status = KP_EVENT_STATUS_NEW;

ステータスがイベント クラスのみに関連する場合。

あなたが説明していないのは、enumよりエレガントな を使用できない理由です。

typedef enum {
    KP_EVENT_STATUS_NEW,
    KP_EVENT_STATUS_APPROVED,
    KP_EVENT_STATUS_DELETED
} KpEventStatus;

externそして、あなたはそのナンセンスを忘れることができます.

于 2013-11-12T17:17:56.423 に答える