Skip to content

Repository files navigation

MainThreadGuard

Tracking UIKit access on main thread

VersionLicensePlatformSwift

Description

This is just a Swift port of PSPDFUIKitMainThreadGuard.m using swizzling on UIView extension

Usage

Call Guard.setup

func application(_ application:UIApplication, didFinishLaunchingWithOptions launchOptions:[UIApplicationLaunchOptionsKey:Any]?)->Bool{
// setup
Guard.setup()returntrue}

Features

It works by swizzling in the following methods

  • setNeedsLayout
  • setNeedsDisplay
  • setNeedsDisplayInRect:

Try accessing UIKit from another thread and MainThreadGuard will assert

classViewController:UIViewController{overridefunc viewDidLoad(){
super.viewDidLoad()
view.backgroundColor =UIColor.white
letlabel=UILabel()
view.addSubview(label)DispatchQueue.global(qos:DispatchQoS.QoSClass.background).async{
label.text ="Setting text on background thread"}}}

Xcode 9+

Xcode 9+ has Main Thread Checker, which detects invalid use of AppKit, UIKit, and other APIs from a background thread.

Installation

MainThreadGuard is available through CocoaPods. To install it, simply add the following line to your Podfile:

You should add this to Debug configuration only

pod"MainThreadGuard",git: 'https://github.com/onmyway133/MainThreadGuard',configurations: 'Debug'

Author

Khoa Pham, onmyway133@gmail.com

License

MainThreadGuard is available under the MIT license. See the LICENSE file for more info.

About

💂‍♂️ Tracking UIKit access on main thread

Topics

Resources

Contributing

Stars

58 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages