Tag: 预处理器

在编译时不包括Prefix.pch

我已经在GlobalVar.h和其他.h文件中定义了许多常量。 我将这些文件导入到Prefix.pch文件中,如下所示: // // Prefix header for all source files of the 'XXX' target in the 'XXX' project // #import "GlobalVar.h" […] #ifndef __IPHONE_3_0 #warning "This project uses features only available in iPhone SDK 3.0 and later." #endif #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #import <CoreData/CoreData.h> #endif 但是,当我编译项目时,所有的#defined标识符都丢失,并报告为“使用未声明的标识符XXX”。 我search生成设置和PCH文件设置为“前缀头”…我在基本SDK 4.3和XCode 4.0.2 你有提示debugging这个? 谢谢你的帮助

在Swift中检查协议的可用性

我正在采用WatchConnectivity,但我仍然支持iOS7和iOS8,因为这个库不可用。 而且我采用的协议WCSessionDelegate也不支持这个旧的系统。 在ObjectiveC中,我会使用预处理指令来屏蔽这个声明,并从不支持它们的版本中采用协议。 我如何处理在Swift中,以便应用程序不会在旧系统上崩溃?

Apple Watch的预处理器macros?

我正在研究苹果的李斯特(苹果手表,iOS和OS X)示例。 该示例对iOS和OS X执行testing: #import <TargetConditionals.h> #if (TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR) @import ListerKit; #elif TARGET_OS_MAC @import ListerKitOSX; #endif 但是,没有对TARGET_OS_WATCH或类似的testing。 在TargetConditionals.h清理watch不会造成任何影响: $ cat /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer /SDKs/iPhoneOS7.1.sdk/usr/include/TargetConditionals.h | grep -i watch $ 从TargetConditionals.h ,我知道有: 这些条件指定生成的代码将在哪个操作系统中执行 跑。 MAC / WIN32 / UNIX条件是相互排斥的。 EMBEDDED / IPHONE 条件是TARGET_OS_MAC的变体。 TARGET_OS_MAC – 生成代码将在Mac OS下运行 TARGET_OS_WIN32 – 生成的代码将在32位Windows下运行 TARGET_OS_UNIX – 生成代码将在一些非Mac OS X unix下运行 TARGET_OS_EMBEDDED […]

什么是预处理器macros来testing是否正在构build应用程序扩展?

这个问题完全基于公开发布的关于在iOS中引入应用程序扩展的文档。 随着在iOS 8中引入应用程序扩展 ,现在可以“扩展定制function和内容,超越您的应用程序,并在用户使用其他应用程序时提供给用户”。 在我的扩展实现中,我在我的扩展中包含了一些来自实际应用的类(模型等)。 问题在于这些类调用了UIApplication ,这在应用程序扩展中是不可用的,编译器告诉我这样做。 我认为这是一个简单的解决scheme将在#if指令中包含对UIApplication任何调用。 例如,如果我只想包含代码,如果我在模拟器上运行,我会使用: #if TARGET_IPHONE_SIMULATOR // Code Here #endif 当目标是应用程序扩展时,是否有类似的macros定义?