আমি এই উত্তরটি বিপরীত দিক থেকে শুরু করব: আপনি যদি নিজের দর্শনটির অবস্থানটি ডিস্কে সংরক্ষণ করতে চান? এটি সিরিয়ালাইজেশন হিসাবে পরিচিত । বিপরীতটি হ্রাস করা - ডিস্ক থেকে বস্তুর স্থিতি পুনরুদ্ধার।
NSCodingপ্রোটোকল ধারাবাহিকভাবে এবং deserialize বস্তু দুটি পদ্ধতি সংজ্ঞায়িত করে:
encodeWithCoder(_ aCoder: NSCoder) {
// Serialize your object here
}
init(coder aDecoder: NSCoder) {
// Deserialize your object here
}
তাহলে এটি আপনার কাস্টম ক্লাসে কেন দরকার? উত্তরটি ইন্টারফেস বিল্ডার। আপনি যখন কোনও স্টোরিবোর্ডে কোনও বস্তু টেনে আনেন এবং কনফিগার করেন, ইন্টারফেস বিল্ডার সেই অবজেক্টের ডিস্কে অবস্থিত করে সিরিয়ালাইজ করে, তারপরে স্টোরিবোর্ডটি যখন স্ক্রিনে উপস্থিত হয় তখন এটিকে ডিসরিয়ালাইজ করে। এগুলি কীভাবে করা যায় সে সম্পর্কে আপনাকে ইন্টারফেস বিল্ডারকে বলতে হবে। খুব কমপক্ষে, আপনি যদি আপনার সাবক্লাসে কোনও নতুন বৈশিষ্ট্য যুক্ত না করেন তবে আপনি সুপারক্লাসকে কেবল আপনার জন্য প্যাকিং এবং আনপ্যাকিং করতে বলতে পারেন, তাই super.init(coder: aDecoder)কল। যদি আপনার সাবক্লাস আরও জটিল হয় তবে আপনাকে সাবক্লাসের জন্য নিজস্ব সিরিয়ালাইজেশন এবং ডিসরিয়ালাইজেশন কোড যুক্ত করতে হবে।
এটি ভিজ্যুয়াল স্টুডিওর পদ্ধতির বিপরীতে, যা কোডটি কোনও লুকানো ফাইলে লেখার সময় অবজেক্টটি তৈরির সময় তৈরি করতে হয়।