TARGET_OS_IPHONE和ApplicationTests

Mat*_*ker 22 xcode gcc mgtwitterengine ios

编译ApplicationTests单元测试包时,为什么这段代码不起作用?

#if TARGET_OS_IPHONE
   #import <Foundation/Foundation.h>
   #import <UIKit/UIKit.h>
#else
   #import <Cocoa/Cocoa.h>
#endif
Run Code Online (Sandbox Code Playgroud)

我的一个依赖项有这个检查,并在我的主应用程序包中编译得很好,但它<Cocoa/Cocoa.h>在编译我的ApplicationTests包时尝试加载.这可能只是我对Xcode缺乏了解,但是当我的测试包没有构建时我会感到紧张.有什么建议?

Jam*_*s J 14

我有一个类似的问题:TARGET_OS_IPHONE在构建静态库时没有定义.我的解决方案是在目标构建选项-DTARGET_OS_IPHONE的" Other C Flags"部分添加" " .

  • 这听起来像是错误的解决方案.你应该像下面提到的antho那样做,包括TargetConditionals.h.记录在这里:http://developer.apple.com/library/ios/#DOCUMENTATION/Xcode/Conceptual/ios_development_workflow/15-Configuring_Applications/configuring_applications.html (5认同)

fjo*_*him 14

最简单的解决方案是#import <Foundation/Foundation.h>如果#if条件将语句移出并用AppKit替换Cocoa,如下所示:

#import <Foundation/Foundation.h>
#if TARGET_OS_IPHONE
   #import <UIKit/UIKit.h>
#else
   #import <AppKit/AppKit.h>
#endif
Run Code Online (Sandbox Code Playgroud)

Foundation伞头导入NSObjCRuntime头,后者又导入TargetConditionals头.

  • 辉煌!这实际上应该是接受的答案! (2认同)