我有一个简单的应用程序,它也有iOS 8 Today Extension(或小部件)。我正在做的一件事是在我的应用程序和我的小部件之间共享代码类,因为这显然使我不必拥有相同代码的多个副本。除了我遇到的一个问题之外,这一切都很好用,其中一个API UIApplication sharedApplication
会出现错误,因为你无法在iOS 8 Widgets上使用它。
所以我想到的是,有一个简单的if语句,用于检查最终目标是否是本机应用程序,或者它是否是iOS 8小部件,然后根据需要添加代码。那会有用吗?
这是我的代码:
if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]))
{
CGSize ssz = sz;
sz = CGSizeMake(ssz.height, ssz.width);
}
如何更改此代码,以便可以执行以下操作之一:
我希望我的问题有道理,感谢你的时间,Dan。
答案 0 :(得分:31)
运行时检查已经结束,因为Xcode不允许您编译使用sharedApplication
的扩展代码。它必须是编译时检查。
不幸的是,此检查不是内置的,您必须添加它。您需要执行以下操作:
TODAY_EXTENSION
的宏,请添加-DTODAY_EXTENSION
:
在您的代码中,使用
之类的内容检查此宏#ifndef TODAY_EXTENSION
... app-only code here ...
#endif
相反,扩展程序中应该仅的代码看起来像
#ifdef TODAY_EXTENSION
... extension-only code here ...
#endif
答案 1 :(得分:4)
#define TODAY_EXTENSION YES
我个人更喜欢这种方法,因为你可以命令点击宏,无论它在哪里用于查看它的定义。