概要
定数については、下記のように認識していましたが、『UIKIT_EXTERN』の方が安全らしい。
・外部に公開する定数は、extern constを付与
・内部でのみ使用する定数は、static constを付与
UIKIT_EXTERNを利用する例
SDTAPIBaseURL.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface SDTAPIBaseURL : NSObject
UIKIT_EXTERN NSString *const SDTBaseURL;
@end
SDTAPIBaseURL.m
#import "SDTAPIBaseURL.h"
@implementation SDTAPIBaseURL
NSString *const SDTBaseURL = @"https://hogehoge.jp";
@end
理由
C と C++ の差を吸収してくれるようです。
UIKitDefines.h
#ifdef __cplusplus
#define UIKIT_EXTERN extern "C" __attribute__((visibility ("default")))
#else
#define UIKIT_EXTERN extern __attribute__((visibility ("default")))
#endif
まとめ
C++ を使う可能性がある、または特に理由がなければ、 UIKIT_EXTERNを使う!
他の理由があれば、ご教授頂ければ幸いです。
参考サイト
When to use UIKIT_EXTERN vs just extern
Java使いのための「Objective-Cではこう書く」