I have a simple app which also has a iOS 8 Today Extension (or widget). One of the things I am doing is sharing code classes between my app and my widget, because obviously this saves me from having to have multiple copies of the same code. It all works nicely apart from one problem I am having, one of the APIs UIApplication sharedApplication
is coming up with an error because you can't use that on iOS 8 Widgets.
So what I was thinking of, is have a simple if statement which checks if the end target is the native app OR if it is a iOS 8 widget and then add the code in as is appropriate. Would that work?
Here is my code:
if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]))
{
CGSize ssz = sz;
sz = CGSizeMake(ssz.height, ssz.width);
}
How can I change this code so that is can do one of the following:
I hope my question makes sense and thanks for your time, Dan.
Run time checks are out, because Xcode won't let you compile extension code that uses sharedApplication
. It has to be a compile-time check.
Unfortunately this check isn't built in, you have to add it. You need to do something like:
TODAY_EXTENSION
, add -DTODAY_EXTENSION
:In your code, check this macro using something like
#ifndef TODAY_EXTENSION
... app-only code here ...
#endif
Conversely, code that should only exist in the extension would look like
#ifdef TODAY_EXTENSION
... extension-only code here ...
#endif