ios - from - visit www itunes com download




আমি কীভাবে প্রেরণ_পরে জিসিডি সুইফট 3, 4, এবং 5 এ লিখব? (9)

আপনি যদি শুধু বিলম্বের কাজটি করতে চান তবে

সুইফট 4 এবং 5

func delay(interval: TimeInterval, closure: @escaping () -> Void) {
     DispatchQueue.main.asyncAfter(deadline: .now() + interval) {
          closure()
     }
}

আপনি এটি ব্যবহার করতে পারেন:

delay(interval: 1) { 
    print("Hi!")
}

সুইফট 2-এ, আমি গ্র্যান্ড সেন্ট্রাল প্রেরণ ব্যবহার করে কোনও ক্রিয়া বিলম্ব করতে dispatch_after ব্যবহার করতে সক্ষম হয়েছি:

var dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC))) 
dispatch_after(dispatchTime, dispatch_get_main_queue(), { 
    // your function here 
})

তবে এটি আর সুইফট ৩-এর পরে সংকলিত বলে মনে হচ্ছে না আধুনিক সুইফটে এটি লেখার পছন্দের উপায়টি কী?


উত্তরগুলির কোনও উত্তরই কোনও মূল-মূল থ্রেডে চলছে না, সুতরাং আমার 2 সেন্ট যোগ করুন।

প্রধান সারিতে (মূল থ্রেড)

let mainQueue = DispatchQueue.main
let deadline = DispatchTime.now() + .seconds(10)
mainQueue.asyncAfter(deadline: deadline) {
    // ...
}

অথবা

DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + .seconds(10)) { 
    // ...
}

গ্লোবাল কাতারে (QOS এর উপর ভিত্তি করে মূল থ্রেড নয়)

let backgroundQueue = DispatchQueue.global()
let deadline = DispatchTime.now() + .milliseconds(100)
backgroundQueue.asyncAfter(deadline: deadline, qos: .background) { 
    // ...
}

অথবা

DispatchQueue.global().asyncAfter(deadline: DispatchTime.now() + .milliseconds(100), qos: .background) {
    // ...
}

এটি সুইফ্ট 3-এ আমার জন্য কাজ করেছিল

let time1 = 8.23
let time2 = 3.42

// Delay 2 seconds


DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
    print("Sum of times: \(time1 + time2)")
}

তুমি ব্যবহার করতে পার

DispatchQueue.main.asyncAfter(deadline: .now() + .microseconds(100)) {
        // Code
    }

সুইফটে 4.1 এবং এক্সকোড 9.4.1 এ

সহজ উত্তরটি হ'ল ...

//To call function after 5 seconds time
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
//Here call your function
}

সুইফ্ট 3 প্রকাশের পরে, @ এস্কেপিং যুক্ত করতে হবে

func delay(_ delay: Double, closure: @escaping () -> ()) {
  DispatchQueue.main.asyncAfter(deadline: .now() + delay) {
    closure()
  }
}

DispatchQueue.main.after(when: DispatchTime, execute: () -> Void) কল করুন DispatchQueue.main.after(when: DispatchTime, execute: () -> Void)

আমি সুইফট 3 (সম্পাদনা> রূপান্তর> বর্তমান স্যুইফ্ট সিন্ট্যাক্সে রূপান্তর করতে) এক্সকোড সরঞ্জামগুলি ব্যবহার করার পরামর্শ দিই। এটা আমার জন্য এটি ধরা পড়ে


সুইফট 4

আপনি ডিসপ্যাচকিউতে একটি এক্সটেনশন তৈরি করতে পারেন এবং ফাংশন বিলম্ব করতে পারেন যা DispatchQueue asyncAfter ফাংশন অভ্যন্তরীণভাবে ব্যবহার করে

extension DispatchQueue {
   static func delay(_ delay: DispatchTimeInterval, closure: @escaping () -> ()) {
      DispatchQueue.main.asyncAfter(deadline: .now() + delay, execute: closure)
   }
}

আর ব্যবহার করুন

DispatchQueue.delay(.milliseconds(10)) {
   print("task to be done")
}

সুইফট 5 এবং উপরে

DispatchQueue.main.asyncAfter(deadline: .now() + 2, execute: {
   // code to execute                 
})




swift5