Kodeco Forums

Swizzling in iOS 11 with UIDebuggingInformationOverlay

Learn how to swizzle "hidden" low-level features like UIDebuggingInformationOverlay into your own iOS 11 apps!


This is a companion discussion topic for the original entry at https://www.raywenderlich.com/295-swizzling-in-ios-11-with-uidebugginginformationoverlay

This article is the proof that RW site did not need to completely convert all source code to Swift.
Objective C is very much relevant still.
I mostly work in Swift now, but I use Obj C from time to time.
Great article.

Hi @mihaela, thank you for the nice comment. Yes, new iOS articles from the RW site are 99.9% Swift nowadays, but sometimes one does need the power of C (with Objective-C being a super-set) to get something done.

I had written this chapter with the idea of wanting to show how to jump into an offset of a method using method swizzling, in which only C can really only do that (to my knowledge). That being said, there are much cleaner implementations to enabling UIDebuggingInformationOverlay. Check out @ian_mcdowell 's much cleaner implementation of the same objective: https://gist.github.com/IMcD23/1fda47126429df43cc989d02c1c5e4a0

This implementation can totally be written in Swift.

And if you’re not a fan of Objective-C or Swift, there’s also a Python LLDB implementation for enabling this as well: LLDB/overlaydbg.py at master · DerekSelander/LLDB · GitHub

But yeah, Swift is the future, but if you want total control over something, C is awesome.

1 Like

Interesting stuff!

Do the earlier chapters explain in detail about registers, offsets, calculating memory addresses, interpreting the assembly instructions, etc?

I’m only vaguely familiar w/these concepts, so although I can mostly follow this chapter I wouldn’t know how to implement the concepts myself. Does seem like it’d be fun to play around with though!

Hey @mccumb01, yes, in the book we go into detail about registers and assembly (see section II). This chapter is kinda the cool stuff you can do with that knowledge.

This tutorial is more than six months old so questions are no longer supported at the moment for it. Thank you! :]