এআরসি দ্বারা প্রবর্তিত সম্পত্তিগুলির জন্য দুটি নতুন মেমরি পরিচালনা বৈশিষ্ট্য রয়েছে strong
এবং weak
।
এগুলি ছাড়াও copy
যা স্পষ্টতই সম্পূর্ণ ভিন্ন কিছু, বনাম এবং বনামের মধ্যে কোনও পার্থক্য রয়েছে ?strong
retain
weak
assign
আমার বোধগম্যতা থেকে, কেবল এখানে পার্থক্য হ'ল এটি পয়েন্টারকে weak
বরাদ্দ করবে nil
, যখন assign
হবে না, যার অর্থ প্রোগ্রামটি ক্র্যাশ হয়ে যাবে যখন আমি পয়েন্টারে একটি বার্তা প্রকাশ করি এটি প্রকাশ হওয়ার পরে। তবে আমি যদি ব্যবহার করি তবে weak
এটি কখনই ঘটবে না, কারণ বার্তা প্রেরণে nil
কিছু হবে না।
আমি strong
এবং এর মধ্যে কোনও পার্থক্য সম্পর্কে জানি না retain
।
সেখানে কোন কারণে আমি ব্যবহার কেন করা উচিত যে assign
এবং retain
নতুন প্রকল্পের, বা থামানোর জন্য ধরনের হয়?
weak
এবং strong
) এবং 4 পরিবর্তনশীল জীবনকাল কোয়ালিফায়ার ( __strong
, __weak
, __unsafe_unretained
, __autoreleasing
)। নীচে এআরসি নোটগুলি দেখুন।
assign
সাথে এটিআরসি সংকলন করার সময় ব্যবহার করা ছিল একটি ত্রুটি। এটি সম্পর্কে অনেকগুলি মুছে ফেলা উত্তর রয়েছে। চূড়ান্ত মুক্তির আগেই এটি পরিবর্তন করা হয়েছিল বলে মনে হয়। unsafe_unretained
আমাদের অনেক প্রাথমিক গ্রহণকারীদের পক্ষে পছন্দের বৈশিষ্ট্য। প্রমাণের জন্য এটি unsafe_unretained
অ্যাপলের "প্রোগ্রামিং উইথ অবজেক্টিভ-সি" এর শিরোনাম "এনক্যাপসুলেটিং ডেটা" বিভাগের অধীনে "কিছু শ্রেণীর জন্য অনিরাপদ অপ্রকাশিত রেফারেন্সগুলি ব্যবহার করুন" বিভাগের অধীনে একটি বৈধ বৈশিষ্ট্যযুক্ত চেহারা। যা বলে: "একটি সম্পত্তির জন্য, এর অর্থ অনিরাপদ_রক্ষিত বৈশিষ্ট্যটি ব্যবহার করা হচ্ছে:"
strong
,weak
এবংunsafe_unretained
।