ios - picture - আমি কিভাবে সুইফ্টে NSTimer ব্যবহার করতে পারেন?




iphone wallpaper (9)

পুনরাবৃত্তি ইভেন্ট

নিচের উদাহরণে দেখা যায় যে আপনি একটি কর্ম একাধিক বার করতে টাইমার ব্যবহার করতে পারেন। টাইমার প্রতিটি অর্ধেক একটি লেবেল আপডেট করার একটি পদ্ধতি কল।

এখানে তার জন্য কোড:

import UIKit

class ViewController: UIViewController {

    var counter = 0
    var timer = Timer()

    @IBOutlet weak var label: UILabel!

    // start timer
    @IBAction func startTimerButtonTapped(sender: UIButton) {
        timer.invalidate() // just in case this button is tapped multiple times

        // start the timer
        timer = Timer.scheduledTimer(timeInterval: 0.5, target: self, selector: #selector(timerAction), userInfo: nil, repeats: true)
    }

    // stop timer
    @IBAction func cancelTimerButtonTapped(sender: UIButton) {
        timer.invalidate()
    }

    // called every time interval from the timer
    func timerAction() {
        counter += 1
        label.text = "\(counter)"
    }
}

বিলম্বিত ঘটনা

আপনি ভবিষ্যতে কিছু সময়ের জন্য একটি এক সময় ইভেন্ট নির্ধারণ করতে টাইমার ব্যবহার করতে পারেন। উপরের উদাহরণ থেকে প্রধান পার্থক্য হল আপনি repeats: false ব্যবহার করেন repeats: false true পরিবর্তে repeats: false

timer = Timer.scheduledTimer(timeInterval: 2.0, target: self, selector: #selector(delayedAction), userInfo: nil, repeats: false)

উপরের উদাহরণ টাইমার সেট করার পরে দুই সেকেন্ড delayedAction নামে একটি পদ্ধতি কল করে। এটি পুনরাবৃত্তি করা হয় না, তবে আপনি যদি timer.invalidate() কল করতে পারেন তবে এটি ইভেন্টটি বাতিল করার আগেই এটি বাতিল করতে হবে।

নোট

  • আপনার টাইমার দৃষ্টান্তটি একাধিকবার শুরু করার কোনও সুযোগ থাকলে, নিশ্চিত করুন যে আপনি পুরানো টাইমার উদাহরণটি প্রথমে অকার্যকর করেছেন। অন্যথায় আপনি টাইমারের রেফারেন্সটি হারাবেন এবং আপনি আর এটিকে থামাতে পারবেন না। ( এই প্রশ্ন & একটি দেখুন )
  • তারা প্রয়োজন হয় না যখন টাইমার ব্যবহার করবেন না। IOS অ্যাপ্লিকেশনের জন্য শক্তি দক্ষতা গাইডের টাইমার বিভাগটি দেখুন।

সংশ্লিষ্ট

  • কিভাবে সুইফ্ট মধ্যে তারিখ এবং সময় সঙ্গে কাজ করতে

আমি চেষ্টা করেছিলাম

var timer = NSTimer()
timer(timeInterval: 0.01, target: self, selector: update, userInfo: nil, repeats: false)

কিন্তু, আমি একটি ভুল বলছে

'(timeInterval: $T1, target: ViewController, selector: () -> (), userInfo: NilType, repeats: Bool) -> $T6' is not identical to 'NSTimer'

SimpleTimer (সুইফট 3.1)

কেন?

এটি দ্রুত একটি সহজ টাইমার ক্লাস যা আপনাকে এতে সক্ষম করে:

  • স্থানীয় scoped টাইমার
  • Chainable
  • এক liners
  • নিয়মিত callbacks ব্যবহার করুন

ব্যবহার:

SimpleTimer(interval: 3,repeats: true){print("tick")}.start()//Ticks every 3 secs

কোড:

class SimpleTimer {/*<--was named Timer, but since swift 3, NSTimer is now Timer*/
    typealias Tick = ()->Void
    var timer:Timer?
    var interval:TimeInterval /*in seconds*/
    var repeats:Bool
    var tick:Tick

    init( interval:TimeInterval, repeats:Bool = false, onTick:@escaping Tick){
        self.interval = interval
        self.repeats = repeats
        self.tick = onTick
    }
    func start(){
        timer = Timer.scheduledTimer(timeInterval: interval, target: self, selector: #selector(update), userInfo: nil, repeats: true)//swift 3 upgrade
    }
    func stop(){
        if(timer != nil){timer!.invalidate()}
    }
    /**
     * This method must be in the public or scope
     */
    @objc func update() {
        tick()
    }
}

আপনি টাইমার পদ্ধতি init যদি

let timer = Timer(timeInterval: 3, target: self, selector: #selector(update(_:)), userInfo: [key : value], repeats: false)

func update(_ timer : Timer) {

}

তারপর পদ্ধতি ব্যবহার করে লুপ এটি যোগ করুন অন্যান্য নির্বাচক বলা হবে না

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

দ্রষ্টব্য: যদি আপনি এটি পুনরাবৃত্তি করতে চান তবে পুনরাবৃত্তিগুলি সত্য করে এবং টাইমারের রেফারেন্স রাখুন অন্যথা আপডেট পদ্ধতিটি বলা হবে না।

আপনি এই পদ্ধতি ব্যবহার করা হয়।

Timer.scheduledTimer(timeInterval: seconds, target: self, selector: #selector(update(_:)), userInfo: nil, repeats: true)

পুনরাবৃত্তি সত্য হলে পরে ব্যবহারের জন্য একটি রেফারেন্স রাখা।


এটা কাজ করবে

override func viewDidLoad() {
    super.viewDidLoad()
    // Swift block syntax (iOS 10+)
    let timer = Timer(timeInterval: 0.4, repeats: true) { _ in print("Done!") }
    // Swift >=3 selector syntax
    let timer = Timer.scheduledTimer(timeInterval: 0.4, target: self, selector: #selector(self.update), userInfo: nil, repeats: true)
    // Swift 2.2 selector syntax
    let timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: #selector(MyClass.update), userInfo: nil, repeats: true)
    // Swift <2.2 selector syntax
    let timer = NSTimer.scheduledTimerWithTimeInterval(0.4, target: self, selector: "update", userInfo: nil, repeats: true)
}

// must be internal or public. 
@objc func update() {
    // Something cool
}

সুইফ্ট 4 এর জন্য, যে পদ্ধতিটি আপনি নির্বাচক পেতে চান তা অবশ্যই উদ্দেশ্য-সি-তে প্রকাশ করা উচিত, এইভাবে @objc বৈশিষ্ট্যটি পদ্ধতি ঘোষণায় যুক্ত করা আবশ্যক।


পরিক্ষা কর:

var timer = NSTimer.scheduledTimerWithTimeInterval(0.01, target: self, selector: Selector("update"), userInfo: nil, repeats: true);

সুইফ্ট 3 এ আপনি NSTimer এর পরিবর্তে Timer ব্যবহার করতে হবে।

এখানে একটি উদাহরণ:

Timer.scheduledTimer(timeInterval: 1, 
    target: self, 
    selector: #selector(YourController.update), 
    userInfo: nil, 
    repeats: true)

// @objc selector expected for Timer
@objc func update() {
    // do what should happen when timer triggers an event
}

সুইফ্ট 4 এ আপডেট করা হয়েছে, ব্যবহারকারী ইনফ্রোয়েভ নেওয়া হয়েছে:

class TimerSample {

    var timer: Timer?

    func startTimer() {
        timer = Timer.scheduledTimer(timeInterval: 5.0,
                                     target: self,
                                     selector: #selector(eventWith(timer:)),
                                     userInfo: [ "foo" : "bar" ],
                                     repeats: true)
    }

    // Timer expects @objc selector
    @objc func eventWith(timer: Timer!) {
        let info = timer.userInfo as Any
        print(info)
    }

}

স্নিফ্টে টিএসএসের নামকরণ করা হয়েছে এনএসটিএমএর। এই সিনট্যাক্স 4.2 কাজ করবে:

let timer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(UIMenuController.update), userInfo: nil, repeats: true)

timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(createEnemy), userInfo: nil, repeats: true)

এবং নাম CreateEnemy দ্বারা মজা তৈরি করুন

fund createEnemy ()
{
do anything ////
}




swift