我正在创建今日扩展程序。我添加了所有必要的文件,并获得了一堆关于
的编译错误具有这些依赖关系的文件深入到我的应用程序(我的网络层上的错误处理程序等),我知道他们不会在今天扩展中使用,但为了完全摆脱依赖于这些文件我需要重构整个应用程序。有办法解决这个问题吗?
我的代码是Swift,所以我不能使用编译器宏来避免执行这些代码行。
#if!TARGET_IS_TODAY_EXTENSION #ENDIF
答案 0 :(得分:4)
您可以使用编译器宏,虽然它不像Objective-C那样灵活(并且IMO略有错误设计)。如果您在"其他Swift Flags"中添加-DTODAY_EXTENSION
之类的内容今天扩展的构建设置部分,您可以在代码中执行以下操作:
#if TODAY_EXTENSION
println("In today extension")
#else
println("Not in today ext")
#endif
它只是有效。但是:
-DTODAY_EXTENSION=1
这样的东西,它就不会有任何影响。删除该值并将其设为-DTODAY_EXTENSION
#if
有效,但#ifdef
没有。Apple已some documentation on this但我仍需要尝试让它正常运行。
答案 1 :(得分:0)
如果使用.shared
的代码在框架中(即cocoapod),那么就不能使用编译器宏。这里的方法应该有效:iOS 8 Extension How To Detect Running