আমি ধাঁধাটি সম্পূর্ণ করার চেষ্টা করছি।
__strong
এনএসবজেক্ট, এনএসএসস্ট্রিং ইত্যাদির মতো সমস্ত অবজেক্টিভ-সি রক্ষণযোগ্য অবজেক্ট পয়েন্টারগুলির জন্য এটি ডিফল্ট It's এটি একটি শক্তিশালী রেফারেন্স। এআরসি -release
সুযোগের শেষে এটির সাথে ভারসাম্য রক্ষা করে ।
__unsafe_unretained
পুরানো পথ সমান। এটি ধরে রাখার যোগ্য অবজেক্টটি ধরে না রেখে দুর্বল পয়েন্টারের জন্য ব্যবহার করা হয়।
__weak
এটি __unsafe_unretained
বাদে এটি একটি স্ব-শূণ্য দুর্বল রেফারেন্সের অর্থ এই যে রেফারেন্সযুক্ত বস্তুটি বিলম্বিত হওয়ার সাথে সাথে পয়েন্টারটি নিল হয়ে যাবে। এটি ঝুঁকিপূর্ণ পয়েন্টার এবং EXC_BAD_ACCESS ত্রুটির ঝুঁকি দূর করে।
তবে ঠিক কী জন্য __autoreleasing
ভাল? আমার এই যোগ্যতাটি কখন ব্যবহার করতে হবে সে সম্পর্কে ব্যবহারিক উদাহরণগুলি খুঁজে পেতে আমার খুব কষ্ট হচ্ছে। আমি বিশ্বাস করি এটি কেবলমাত্র ফাংশন এবং পদ্ধতিগুলির জন্য যা একটি পয়েন্টার-পয়েন্টার যেমন:
- (BOOL)save:(NSError**);
অথবা
NSError *error = nil;
[database save:&error];
যা এআরসি এর অধীনে এইভাবে ঘোষণা করতে হবে:
- (BOOL)save:(NSError* __autoreleasing *);
তবে এটি খুব অস্পষ্ট এবং আমি কেন তা পুরোপুরি বুঝতে চাই । আমি যে কোড স্নিপেটগুলি পেয়েছি তা দুটি তারার মাঝে __আউটোরেলিজিং অন্তর্ভুক্ত রাখে, যা আমার কাছে অদ্ভুত দেখাচ্ছে। প্রকারটি NSError**
(এনএসইররারের পয়েন্টার-পয়েন্টার), তাই __autoreleasing
তারার মধ্যে কেন কেবল সামনে নয় কেন NSError**
?
এছাড়াও, এমন অন্যান্য পরিস্থিতিও থাকতে পারে যার মধ্যে আমাকে নির্ভর করতে হবে __autoreleasing
।