CustomFrameworkというiOSフレームワークを作成しましたが、Xcodeによって作成されたCustomFramework.hファイルには、デフォルトで次の内容が含まれています。
#import <UIKit/UIKit.h>
//! Project version number for CustomFramework.
FOUNDATION_EXPORT double CustomFrameworkVersionNumber;
//! Project version string for CustomFramework.
FOUNDATION_EXPORT const unsigned char CustomFrameworkVersionString[];
// In this header, you should import all the public headers of your framework using statements like #import <CustomFramework/PublicHeader.h>
プロジェクトをビルドすると、これらの警告が表示されます
No previous extern declaration for non-static variable 'CustomFrameworkVersionNumber'
No previous extern declaration for non-static variable 'CustomFrameworkVersionString'
デフォルトのフレームワークの作成でこれらの警告が表示される理由はありますか?
Cファミリの言語では、これは、変数がstatic
として明示的に定義されていないか、ヘッダーファイルでextern
として宣言されていないことが原因です。
それに対処するための3つのオプションがあります。
定義の前にstatic
キーワードを配置します。
static FOUNDATION_EXPORT double CustomFrameworkVersionNumber;
static FOUNDATION_EXPORT const unsigned char CustomFrameworkVersionString[];
変数ごとにextern
定義を使用して個別のヘッダーファイルを作成します。
-Wmissing-variable-declarations
で警告を抑制しますこの質問は この質問 に似ています。