Skip to content

4.0.0

Compare
Choose a tag to compare
@NSExceptional NSExceptional released this 24 Mar 20:57
· 359 commits to master since this release

This release has been the product of months of daily work. Most of FLEX was rewritten from the ground up. If you want to show your appreciation, I have a GitHub Sponsors profile with a range of tiers where you can donate to me on a monthly basis. I also have Cash App ($tannerbennett). Reach out to me on Twitter if you have any questions or concerns about anything!

(This is by no means a complete list of changes)

Misc

  • Drops support for iOS 8 — if you need to support iOS 8, use FLEX 3
  • Tabs! Every screen now has a toolbar you can use to view the list of open tabs and switch between them.
    • Background a tab by swiping down to dismiss the view controller (yes, even if you're not on iOS 13, try it)
    • Close a tab by pressing the "Done" button or by deleting it from the tabs list
  • Bookmarks! Bookmark objects to save them for later
    • Hit the + button in the tabs list to open a tab from a bookmark
  • New icons for the FLEX toolbar, taken from SFSymbols (yay @3x)
  • System log is back from the dead: iOS 10 largely broke the system log feature with the addition of os_log. FLEX now forces NSLog() to use ASL so you don't get a log full of useless internal junk
  • Added various singletons to the main menu screen
  • Dark mode improvements
  • Run queries on SQLite databases (thanks @LesykMelnychuk)
  • Most screens are now searchable, including lists of object references and the keychain
  • File browser now shows a list of classes when you select a mach-o file
  • More public APIs have been exposed
  • Added a Swift example project which makes use of some new public APIs

FLEX Toolbar

  • Long press on the Menu button to show the list of open tabs
  • Long press on the Views button after selecting a view to show a list of view controllers at that point
  • Long press on the Select button to show a list of all windows and scenes; tap a window to adjust it's level
  • Added a Recent button which opens the most recently backgrounded tab

FLEXObjectExplorer

  • New APIs for customizing "shortcuts" that are displayed for any given object or class
  • Uses a monospace font for displaying metadata
  • Adds context menus for metadata rows on iOS 13, useful for copying various metadata properties
  • Protocol conformances are listed at the bottom, as well as instance size and image of origin
  • Added various helpful shortcuts to a number of classes
  • Fine-tuned the shortcuts for various UIKit classes
  • Swipe left or right to change your position in the class hierarchy
  • Tapping on a property or ivar now takes you to the value; press the detail button to edit instead
  • Added a section index control to aid in quickly jumping to a specific metadata section
  • Added a toolbar with quick access to helpful toggles or options
    • Toggles for visibility of method overrides, property-backing ivars, and property-backing methods
    • Quickly copy the object's description or address or bookmark it
    • Quickly access the list of bookmarks or open tabs
  • Support NSDecimalNumber setters
  • Added option to view a list of subclasses when exploring a class object

View Explorer

  • Swipe left or right on the toolbar's selected view box quickly to move your selection higher or deeper into the view hierarchy
  • Added a 3D reveal-like view explorer: explore an exploded representation of the view hierarchy right on your device!
  • Background colors of views are more accurately indicated
  • Translucency is now correct
  • nil background colors don't show a color indicator at all

Runtime Browser

  • Replaces the System Libraries and App Classes screens
  • Browse the runtime using a key-path-like syntax: bundle.class.method
    • Accepts wildcards, like *.*View* which will list all classes that contain View
    • Currently only supports searching for methods, properties and ivars soon to come
    • Search for an instance method with -methodName, a class method with +methodName, or either by prefixing your query with a wildcard
      • For example, UIKit*.*Controller.*foo searches for any method containing foo in any class ending with Controller in any loaded bundle starting with UIKit

Method Calling

  • Added a "paste" button to argument input accessory views, useful for pasting an address
  • Added support for char * and SEL parameters

Network History

  • Now prompts you to turn it on before taking you to the screen
  • Easy access to the "clear" button in the toolbar
  • iOS 13 users can blacklist domains by 3D touching on requests
  • JSON payloads are now displayed as NSDictionary/NSArray when you try to view them