Почему используют строковые константы против констант Enum?

У меня есть вопрос, связанный с дизайном.

Я видел, что у класса UIAPlication имеет такие флаги:

UIKIT_EXTERN NSString *const UIApplicationDidEnterBackgroundNotification
UIKIT_EXTERN NSString *const UIApplicationWillEnterForegroundNotification
UIKIT_EXTERN NSString *const UIApplicationDidFinishLaunchingNotification;
UIKIT_EXTERN NSString *const UIApplicationDidBecomeActiveNotification;
UIKIT_EXTERN NSString *const UIApplicationWillResignActiveNotification;
UIKIT_EXTERN NSString *const UIApplicationDidReceiveMemoryWarningNotification;

и, на другой стороне, класс UiableView объявляет подобные структуры:

typedef enum {
    UITableViewScrollPositionNone,        
    UITableViewScrollPositionTop,    
    UITableViewScrollPositionMiddle,   
    UITableViewScrollPositionBottom
} UITableViewScrollPosition;  

, для уведомлений, а другой определяет типы объектов. Я считаю, что эти два являются вариантами дизайна для «тега» некоторые связанные объекты и создают раздумы во время выполнения на основе этого флага.

Допустим, я хочу создать фабрику объектов, которые необходимо пометить. На изображении ниже, я хочу перечисления или идентификаторы для каждого раздела и виджета. Как любой виджет общается или «вызывает» еще один? е. [[Contecter SharedInstance] instredwidget: ?? Forception: ?? Info: (ID) информация];

enter image description here

Есть ли более глубокая или точная причина выбрать один из них? Спасибо за вашу помощь.

9
задан progrmr 1 September 2011 в 03:14
поделиться