2

iOS サブプロジェクトを含む OSX プロジェクトがあります。サブプロジェクトは UIKit.h を使用しますが、サブプロジェクトの UIKit フレームワークがライブラリとのリンク バイナリ セクションに追加されていても、次のようなエラーが表示されます。

レキシカルまたはプリプロセッサの問題エラー UIKit/UIKit.h ファイルが見つかりません

どうすればこれを解決できますか?

4

1 に答える 1

5

条件付きコンパイルが必要なだけのように聞こえます:

ソース コードを共有する OSX と iOS の両方でビルドするプロジェクトがあります。SysInfo.hこれを上部に持つヘッダーファイルがあります:

#import <TargetConditionals.h>

#if !TARGET_OS_IPHONE && !TARGET_IPHONE_SIMULATOR
#define SYSINFO_OSX 1
#else
#define SYSINFO_IOS 1
#endif

(ここに関係のない他のものと同様に)

そして、次のように使用できます。

#import "SysInfo.h"

#ifdef SYSINFO_OSX
#import <Cocoa/Cocoa.h>
#else // !SYSINFO_OSX
#import <UIKit/UIKit.h>
#endif // SYSINFO_OSX

もちろん、これは氷山の一角にすぎません。ほぼ同じアプローチを使用して、適切なプラットフォームで適切な API を確実に使用する必要があるからです。

于 2013-09-25T12:43:43.867 に答える