'commonModes' has been renamed to 'RunLoop.Mode.common'

How To Build a Match Game - Lesson 10 (Win Condition) using Xcode Version 11.4 (11E146)

added “RunLoop.main.add(timer!, forMode: .commonModes)” and got “‘commonModes’ has been renamed to ‘RunLoop.Mode.common’”, hit Fix and got “Cannot infer contextual base in reference to member ‘RunLoop’”. Can any one advise what I do next? Thanks

Hi @JulianWyllie Welcome to the community!

Is this what you have that is not working?

timer = Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(timerElasped), userInfo: nil, repeats: true)
        RunLoop.main.add(timer!, forMode: RunLoop.Mode.common)

Let us know and we will have a go.

Hi Mark, yep, that’s the fella!

Thanks for getting in touch,


HI Julian,

if you the code I posted above is not working for your project, post your code and we will take a look.


Hi Mark,

Not sure how much of the code you need, let me know -

import UIKit

class ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource {

@IBOutlet weak var timerLabel: UILabel!

@IBOutlet weak var collectionView: UICollectionView!

var model = CardModel()
var cardArray = [Card]()

var firstFlippedCard:IndexPath?

var timer: Timer?
var milliSeconds:Float = 10 * 1000 // ten seconds

override func viewDidLoad() {
    collectionView.delegate = self
    collectionView.dataSource = self
    // Call the getCards method of card model
    cardArray = model.getCards()
    // Create timer
    timer = Timer.scheduledTimer(timeInterval: 0.001, target: self, selector: #selector(timerElapsed), userInfo: nil, repeats: true)
    RunLoop.main.add(timer!, forMode: .RunLoop.Mode.common)


Hi Julian,

Remove the first . from the RunLoop.Mode.common and see if that clears your error.


Hi Mark,

Yes, that certainly does the job!

Thank you very much for that, any idea why the ‘Fix’ put the ‘.’ there?


You could have used the shorthand method

RunLoop.main.add(timer!, forMode: .common)

forMode: is expecting a Runloop.Mode and whilst it is quite OK to have Runloop.Mode.common it’s more usual to shorthand it with .common.

Thanks for that Chris, I am still on the steep upward learning curve so hopefully I won’t have to ask too many questions like this soon.


1 Like

Remember there is no such thing as a silly question. We are all here to learn and share what we know in the hope that it helps someone else.