Updating extensions for iOS 10

From iPhone Development Wiki
Revision as of 04:54, 24 December 2016 by Kirb (talk | contribs) (add category, add a bit about logging)
Jump to: navigation, search

Let's collect knowledge like we did with iOS 9, iOS 8 and iOS 7 – paste in your notes and share what you've learned, and somebody else will organize it later. :) If you want to ask questions and share tips over chat with other developers, see How to use IRC for how to connect to #theos and #iphonedev.

Hey developer, you can add your knowledge here! Yes, you! Make an account and edit this page!

It's also helpful to double-check the statements here and add more info! These are notes and drafts from early research – feel free to update them.

If you want to see what's been recently updated on this page, you can use the wiki's history feature to compare the revisions (to look at the diff) since the last time you visited this page.

Logging

The system logging APIs have changed again – ASL and syslog are now deprecated in favor of the unified logging system. NSLog() and CFLog() now send their output through this system.

The Console app in macOS Sierra supports reading logs from connected iOS devices – just select the device from the sidebar. The new concept seems to encourage being verbose, so system processes have become pretty noisy. Right click a message to reveal options for filtering in or out messages from a process, library, subsystem, category, etc. You probably want to filter out irrelevant noisy processes otherwise you’ll be overwhelmed and need to scroll a lot. Set up a filter you’re happy with and click Save in the top-right. There is also the log command line tool.

If you want to use os_log, as a courtesy for others, use os_log_create with your package identifier as the subsystem. Keep in mind the APIs are new to iOS 10. If you support older iOS, retrieve the function symbols at runtime with dlsym() and fall back to an old logging mechanism if they are null.