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一个非常常见的类名为的类来说,这是双倍的。

所以像这样的东西,对我来说看起来不错:

#import "KPEvent.h"

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

或者更好:

myEvent.status = KP_EVENT_STATUS_NEW;

如果状态仅与事件类有关。

您没有解释的是为什么您不能使用enum更优雅的 an :

typedef enum {
    KP_EVENT_STATUS_NEW,
    KP_EVENT_STATUS_APPROVED,
    KP_EVENT_STATUS_DELETED
} KpEventStatus;

你可以忘记那些extern废话。

于 2013-11-12T17:17:56.423 回答