Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Swizzling NSObject classes in Swift
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
codelynx
March 16, 2021
200
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Swizzling NSObject classes in Swift
codelynx
March 16, 2021
More Decks by codelynx
See All by codelynx
AI & Enginnering
codelynx
0
200
Claude codeで 創る世界と壊れる世界
codelynx
0
240
Caude codeで爆速開発
codelynx
0
210
2024-05-yumemi.pdf
codelynx
0
410
ユーザーたった一人のアプリ開発記
codelynx
0
380
Hello New Project
codelynx
1
320
WWDC21/Xcode13
codelynx
0
280
Tailor_your_Metal_apps_for_Apple_M1.pdf
codelynx
0
160
Delegate Chaining Workaround
codelynx
0
83
Featured
See All Featured
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
GraphQLとの向き合い方2022年版
quramy
50
15k
Docker and Python
trallard
47
4.1k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
220
We Are The Robots
honzajavorek
0
310
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
Embracing the Ebb and Flow
colly
88
5.1k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
210
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.5k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
Swizzing NSObject classes Kaz Yoshikawa FEB 2021
Swizzling • To be able to replace or to override
existing NSObject methods • UIViewController viewDidAppear UIViewController myViewDidAppear viewDidAppear Before After viewDidAppear viewDidAppear
What’s for? • Analytics for user tracking • eg. Logging
extra information of all viewDidAppear methods • Application wide behavior changes • Tap on UIButton to speech before sendAction() get invoked
Example func swizzleMethod(_ `class`: AnyClass, _ original: Selector, _ swizzled:
Selector) { if let original = class_getInstanceMethod(`class`, original), let swizzled = class_getInstanceMethod(`class`, swizzled) { method_exchangeImplementations(original, swizzled) } else { print("failed to swizzle: \(`class`.self), '\(original)', '\(swizzled)'") } } swizzleMethod( UIViewController.self, #selector(UIViewController.viewDidAppear(_:)), #selector(UIViewController.viewDidAppear_x(_:)) ) public extension UIViewController { @objc private func viewWillAppear_x(_ animated: Bool) { print(Self.self, #function) self.viewWillAppear_x(animated) } }
Consideration • Do not abuse • Apple may terminate or
discontinue this mechanism in the future
Code • https://gist.github.com/codelynx/3685e0530607746a0811dfd3d1fe ff 9e
Thank you