When using PureLayout in an App Extension, you must define the preprocessor macro PURELAYOUT_APP_EXTENSIONS
to prevent usage of unavailable APIs.
If you do not do this, you will see an error such as:
'sharedApplication' is unavailable: not available on iOS (App Extension) - Use view controller based solutions where appropriate instead.
To fix this:
If you're using CocoaPodsYou probably don't want to modify the Pods
project (and the Pods-PureLayout
target it contains) by hand because it is regenerated every time you run pod install
. Instead, you should use a post_install
hook to have the preprocessor macro automatically added every time you run pod install
.
At the end of your Podfile
, add the following post_install
hook:
post_install do |installer| # NOTE: If you are using a CocoaPods version prior to 0.38, replace `pods_project` with `project` on the below line installer.pods_project.targets.each do |target| if target.name.end_with? "PureLayout" target.build_configurations.each do |build_configuration| if build_configuration.build_settings['APPLICATION_EXTENSION_API_ONLY'] == 'YES' build_configuration.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] = ['$(inherited)', 'PURELAYOUT_APP_EXTENSIONS=1'] end end end end end
The above post_install
hook will define the macro PURELAYOUT_APP_EXTENSIONS=1
for every build configuration on all PureLayout
targets in the generated Pods
project that are used by App Extensions.
Apple LLVM 6.0 - Preprocessing
PURELAYOUT_APP_EXTENSIONS=1
Now, when your App Extension target is selected, PureLayout will not use unavailable APIs.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4