Search code examples
swiftclassnstimer

NSTimer Not Working In Classes That Are Not GameScene


I can't seem to be able to get a NSTimer to work in a class that I have created. Every time I run the app, it crashes and says the below:

2015-11-06 19:23:47.108 Project[30546:7771747] *** NSForwarding: warning: object 0x7b025190 of class 'Project.LogoScreen' does not implement methodSignatureForSelector: -- trouble ahead Unrecognized selector -[Project.LogoScreen show] (lldb)

When I use the NSTimers in the GameScene however, I don't get any errors.

Below is the code which I am running which is failing:

// Class #1

    import SpriteKit

    var background: SKSpriteNode!

    class GameScene: SKScene {
        override func didMoveToView(view: SKView) {

            anchorPoint = CGPointMake(0.5, 0.5)

            background = SKSpriteNode(color: UIColor.whiteColor(), size: size)
            addChild(background)

            LogoScreen().create()

        }

    }


// Class #2

    import Foundation
    import SpriteKit

        var spriteLogo: SKSpriteNode!
        var spriteScreenLogo: SKSpriteNode!

        class LogoScreen {

            func create() {

                spriteScreenLogo = SKSpriteNode(color: UIColor.blackColor(), size: background.size)
                spriteScreenLogo.zPosition = 1
                background.addChild(spriteScreenLogo)

                spriteLogo = SKSpriteNode(imageNamed: "logo")
                spriteLogo.alpha = 0
                spriteLogo.zPosition = 2
                background.addChild(spriteLogo)

                NSTimer.scheduledTimerWithTimeInterval(3, target: self, selector: Selector("show"), userInfo: nil, repeats: false)

            }

            func show() {

                print("here")

            }

        }

Solution

  • make it like this:

            @objc func show() {
    
                print("here")
    
            }