Swift-এ মেমোরি ম্যানেজমেন্টের জন্য স্ট্রং এবং উইক রেফারেন্স ব্যবহৃত হয়। এগুলো মূলত অবজেক্টের লাইফসাইকেল নিয়ন্ত্রণ করতে সহায়ক।
Swift-এ স্ট্রং (Strong) এবং উইক (Weak) রেফারেন্স
১. স্ট্রং রেফারেন্স
- স্ট্রং রেফারেন্স একটি অবজেক্ট ধরে রাখে এবং যতক্ষণ পর্যন্ত একটি স্ট্রং রেফারেন্স অবশিষ্ট থাকে, ততক্ষণ পর্যন্ত সেই অবজেক্ট ডি-অ্যালোকেট হবে না।
- ডিফল্টভাবে, সব রেফারেন্স স্ট্রং হয়।
class Person {
var name: String
init(name: String) {
self.name = name
}
}
var person1 = Person(name: "Alice")
var person2 = person1 // person2 একটি স্ট্রং রেফারেন্স ধারণ করছে
- এখানে,
person1এবংperson2উভয়ইPersonঅবজেক্টের স্ট্রং রেফারেন্স ধরে রাখছে।
২. উইক রেফারেন্স
- উইক রেফারেন্স এমন রেফারেন্স যা অবজেক্টের মালিকানা ধরে রাখে না এবং অবজেক্টের রেফারেন্স কাউন্ট বাড়ায় না। এটি মেমোরি লিক এড়াতে ব্যবহৃত হয়, বিশেষত strong reference cycle থেকে রক্ষা পেতে।
- উইক রেফারেন্সের ডেটা
nilহতে পারে, তাই এটি সবসময়optionalহিসেবে ডিক্লেয়ার করতে হয়।
class Car {
var model: String
weak var owner: Person?
init(model: String) {
self.model = model
}
}
- এখানে,
ownerপ্রোপার্টি একটি উইক রেফারেন্স, যাPersonঅবজেক্টের রেফারেন্স ধরে রাখে, কিন্তু তার মালিকানা ধরে রাখে না।
কেন স্ট্রং এবং উইক রেফারেন্স ব্যবহার করা হয়?
- স্ট্রং রেফারেন্স: অবজেক্ট মেমোরিতে ধরে রাখতে।
- উইক রেফারেন্স: Strong reference cycle এড়াতে, যাতে অবজেক্ট সঠিক সময়ে ডি-অ্যালোকেট হয়।
স্ট্রং এবং উইক রেফারেন্স সঠিকভাবে ব্যবহার করে মেমোরি ম্যানেজমেন্ট এবং মেমোরি লিক প্রতিরোধ করা যায়, যা অ্যাপ্লিকেশনের পারফরম্যান্স এবং স্থায়িত্ব নিশ্চিত করে।
Content added By