শুরু থেকেই, সুইফট ওবিজেসি এবং সি আরও সুইফটি তৈরির জন্য কয়েকটি সুবিধা সরবরাহ করেছে, প্রতিটি সংস্করণে আরও যুক্ত করে। এখন, সুইফ্ট 3-এ নতুন "আমদানি সদস্য হিসাবে" বৈশিষ্ট্যটি সি এপিআই-র নির্দিষ্ট স্টাইলের ফ্রেমওয়ার্কগুলি দেয় - যেখানে আপনার কাছে এমন ডেটা টাইপ রয়েছে যা শ্রেণীর মতো ধরণের কাজ করে, এবং এটিতে কাজ করার জন্য একগুচ্ছ বৈশ্বিক ফাংশন - আরও বেশি সুইফট-নেটিভ এপিআইয়ের মতো কাজ করুন। ডেটা প্রকারগুলি সুইফ্ট শ্রেণি হিসাবে আমদানি করে, তাদের সম্পর্কিত বিশ্বব্যাপী ফাংশনগুলি সেই শ্রেণীর উপর পদ্ধতি এবং বৈশিষ্ট্য হিসাবে আমদানি করে এবং কিছু সম্পর্কিত জিনিস যেমন সেটগুলির ধরণের সেট সাব-টাইপ হয়ে উঠতে পারে।
এক্সকোড 8 / সুইফ্ট 3 বিটাতে, ডিসপ্যাচ কাঠামোটিকে আরও বেশি সুইফটি তৈরি করতে অ্যাপল এই বৈশিষ্ট্যটি (কয়েকজনকে সাথে নিয়ে) প্রয়োগ করেছে। (এবং কোর গ্রাফিকসও ।) আপনি যদি সুইফট ওপেন সোর্স প্রচেষ্টা অনুসরণ করে থাকেন তবে এটি কোনও সংবাদ নয় , তবে এখন এটি প্রথমবারের মতো এটি এক্সকোডের অংশ।
যে কোনও প্রকল্পকে সুইফট 3 এ স্থানান্তরিত করার জন্য আপনার প্রথম পদক্ষেপটি এটি Xcode 8 এ খুলতে হবে এবং মেনুতে সম্পাদনা> রূপান্তর> বর্তমান সুইফ্ট সিনট্যাক্সে ... নির্বাচন করতে হবে । এটি পুনরায় নামকরণকৃত API এবং অন্যান্য পরিবর্তনের জন্য একবারে প্রয়োজনীয় সমস্ত পরিবর্তনগুলি (আপনার পর্যালোচনা এবং অনুমোদনের সাথে) প্রয়োগ করবে। (প্রায়শই, কোডগুলির একটি লাইন একবারে এই পরিবর্তনগুলির একের বেশি দ্বারা প্রভাবিত হয়, তাই ত্রুটি সংশোধন করার প্রতিক্রিয়া - এর স্বতন্ত্রভাবে সবকিছু ঠিকঠাক পরিচালনা করতে পারে না))
ফলাফলটি যে ব্যাকগ্রাউন্ডে এবং পিছনে কাজ স্থির করার জন্য সাধারণ প্যাটার্নটি এখন এর মতো দেখায়:
// Move to a background thread to do some long running work
DispatchQueue.global(qos: .userInitiated).async {
let image = self.loadOrGenerateAnImage()
// Bounce back to the main thread to update the UI
DispatchQueue.main.async {
self.imageView.image = image
}
}
নোট করুন আমরা .userInitiated
পুরানো DISPATCH_QUEUE_PRIORITY
কনস্ট্যান্টগুলির পরিবর্তে একটি ব্যবহার করছি । ওএস এক্স 10.10 / আইওএস 8.0-এ কোয়ালিটি অফ সার্ভিস (কিউওএস) স্পেসিফায়ার প্রবর্তন করা হয়েছিল, সিস্টেমকে কাজের অগ্রাধিকার দেওয়ার এবং পুরাতন অগ্রাধিকারের স্পেসিফায়ারদের অবমূল্যায়নের একটি সুস্পষ্ট উপায় সরবরাহ করে। বিবরণের জন্য পটভূমি কাজ এবং শক্তির দক্ষতার বিষয়ে অ্যাপলের ডক্স দেখুন ।
যাইহোক, আপনি যদি কাজটি সংগঠিত করার জন্য নিজের কাতারে রাখেন তবে এখন পাওয়ার উপায়টি দেখতে এই জাতীয় দেখাচ্ছে (লক্ষ্য করুন এটি DispatchQueueAttributes
একটি OptionSet
, সুতরাং আপনি বিকল্পগুলি একত্রিত করার জন্য সংগ্রহ-শৈলীর আক্ষরিক ব্যবহার করেন):
class Foo {
let queue = DispatchQueue(label: "com.example.my-serial-queue",
attributes: [.serial, .qosUtility])
func doStuff() {
queue.async {
print("Hello World")
}
}
}
dispatch_after
পরে কাজ করতে ব্যবহার করছেন? এটি কাতারেও একটি পদ্ধতি এবং এটির একটি লাগে DispatchTime
যা বিভিন্ন সংখ্যার জন্য অপারেটর রয়েছে যাতে আপনি কেবল পুরো বা ভগ্নাংশের সেকেন্ড যুক্ত করতে পারেন:
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { // in half a second...
print("Are we there yet?")
}
এক্সকোড ৮-এ এর ইন্টারফেসটি খোলার মাধ্যমে আপনি নতুন ডিসপ্যাচ এপিআই DispatchQueue
-এর আশেপাশে আপনার পথটি খুঁজে পেতে পারেন - ডিসপ্যাচ মডিউলটি সন্ধান করতে দ্রুত খুলুন ব্যবহার করুন বা আপনার সুইফট প্রকল্প / খেলার মাঠে একটি চিহ্ন (যেমন ) রাখুন এবং তারপরে কমান্ড-ক্লিক করুন, তারপরে ব্রাউস করুন সেখান থেকে মডিউল। (আপনি অ্যাপলের স্পাইফাই নতুন এপিআই রেফারেন্স ওয়েবসাইট এবং ইন-এক্সকোড ডক ভিউয়ারে স্যুইফ্ট ডিসপ্যাচ এপিআই খুঁজে পেতে পারেন তবে দেখে মনে হচ্ছে যে সি সংস্করণ থেকে ডক সামগ্রীটি এখনও এটিতে স্থানান্তরিত হয়নি))
দেখুন মাইগ্রেশন গাইড আরো টিপসের জন্য।