Showing posts with label Mobile. Show all posts
Showing posts with label Mobile. Show all posts

Wednesday, November 29, 2017

UIDebuggingInformationOverlay

UIDebuggingInformationOverlay is a private UIWindow subclass created by Apple, presumably to help developers and designers debug Apple’s own iOS apps.


Harder to get at in iOS 11, but this post shows how to use swizzling to get it working there too.

Thursday, October 15, 2015

Adding edge swipe to SFSafariViewController

Subclass SFSafariViewController, add a view on the edge, and add a UIScreenEdgePanGestureRecognizer to it.

Monday, October 5, 2015

Aspects

Library for aspect oriented programming. Think of Aspects as method swizzling on steroids. It allows you to add code to existing methods per class or per instance, whilst thinking of the insertion point e.g. before/instead/after. Aspects automatically deals with calling super and is easier to use than regular method swizzling.

Tuesday, July 7, 2015

Delivering high scroll performance

To diagnose jerky scrolling in their iOS app, Facebook measures the frame rate and when it drops below a certain threshold it has a watchdog thread that sends a signal to the main thread to get a stack trace of what is resulting in slow rendering. Sample code provided.

Thursday, April 30, 2015

foursquare/FSQCellManifest

A UITableView and UICollectionView delegate and datasource that provides a simpler unified interface for describing your sections and cells.

Saturday, January 17, 2015

UIKit Debug Mode

UIKit has hidden, useful debug flags for gesture/touch/animation logs, enable "InternalBuild" mode to switch them on.

fishhook

fishhook is a very simple library that enables dynamically rebinding symbols in Mach-O binaries running on iOS in the simulator and on device. This provides functionality that is similar to using DYLD_INTERPOSE on OS X. At Facebook, we've found it useful as a way to hook calls in libSystem for debugging/tracing purposes (for example, auditing for double-close issues with file descriptors).

Wednesday, December 10, 2014

Hopper+lldb for iOS Developers: A Gentle Introduction

Tutorial on how to use Hopper to find out how Apple frameworks work.

Monday, December 8, 2014

HeapInspector

HeapInspector is an iOS debug tool that monitors the memory heap in your app. You can discover memory leaks, no longer needed living objects and more issues directly on your device without ever starting Instruments.

Wednesday, November 5, 2014

widged/kinetic

Kinetic Scrolling with JavaScript

Wednesday, June 12, 2013

SimFinger

Helper tools (fake apps, fake carrier, tap indicator) for recording iOS app screencasts. See this blog post for more details.

Friday, June 7, 2013

PonyDebugger

PonyDebugger is a remote debugging toolset. It is a client library and gateway server combination that uses Chrome Developer Tools on your browser to debug your iOS application's network traffic and managed object contexts.

Saturday, June 1, 2013

Clear in the iCloud

Clear uses a custom system built on top of iCloud File Storage and it works in a similar fashion to Operational Transformation. The post proceeds to cover the reasons for choosing iCloud, then explores iCCD and subsequently builds a synchronization system from the ground up.

Friday, April 26, 2013

Alternative UIWebView to Objective-C communication paths

WebViewJavascriptBridge (and similar libraries) rely on loading a custom URL scheme in an iframe and intercepting the request in shouldStartLoadWithRequest. Other approaches include embedded WebSockets and HTTP servers (see LinkedIn.

One alternative to consider is modifying document.cookie for some magic cookie name value, and then listening for those changes on the iOS side via NSHTTPCookieManagerCookiesChangedNotification. That might have fewer side-effects that triggering a (sub-)frame load.

Thursday, April 25, 2013

Tuneup JS

Tune-up is a collection of JavaScript utilities that builds upon and improves the UIAutomation library provided by Apple for testing iOS applications via Instruments. While the JavaScript library provided by Apple is fairly complete and robust, it is a bit wordy and repetitive at times. This project aims to reduce as much pain as possible when writing UI tests by enhancing the existing API. It also provides some basic structure for your tests in a manner familiar to most testers.

Wednesday, April 17, 2013

FastClick

FastClick is a simple, easy-to-use library for eliminating the 300ms delay between a physical tap and the firing of a click event on mobile browsers. The aim is to make your application feel less laggy and more responsive while avoiding any interference with your current logic.

See also Google's fast buttons article. Though it may not be necessary anymore, at least on Android (stock browser doesn't do a delay for fixed viewport sites since Gingerbread, and neither does Chrome).

Sunday, January 20, 2013

Automating iOS Screenshots

Post describing the use of a self-driving screenshot mode for apps (uses WaxSim for a CLI interface to the simulator). See also the original author's take.

UI Screen Shooter is a variant that uses UI Automation.

On the desktop, the screencapture tool may be useful.

Tuesday, December 18, 2012

Clutch.io

Clutch.io is two projects:

  • Native A/B testing for iOS and Android
  • A toolkit for developing hybrid native/HTML applications for iOS

Thursday, November 15, 2012

iOS Runtime Headers

iOS Objective-C headers as derived from runtime introspection. Generated using RuntimeBrowser.