এআরসি, আমি আর কাস্ট করতে পারেন CGColorRef
থেকে id
। আমি শিখেছি যে আমার একটি ব্রিজড কাস্ট করা দরকার। ঝনঝন ডক্স অনুযায়ী :
একটি ব্রিজযুক্ত castালাই হ'ল সি-স্টাইলের threeালাই যা তিনটি কীওয়ার্ডের মধ্যে একটিতে টিকা দেওয়া হয়:
(__bridge T) op
গন্তব্য প্রকারে অপারেন্ডকে কাস্ট করেT
। যদিT
একটি ধারণযোগ্য অবজেক্ট পয়েন্টার টাইপ হয় তবেop
অবশ্যই একটি বহনযোগ্য পয়েন্টার টাইপ থাকা উচিত। যদিT
একটি অ-রক্ষণযোগ্য পয়েন্টার টাইপ হয়, তবে অপের অবশ্যই একটি ধারণযোগ্য অবজেক্ট পয়েন্টার টাইপ থাকতে হবে। অন্যথায় নিক্ষিপ্তটি দুর্গঠিত। মালিকানার কোনও স্থানান্তর নেই, এবং এআরসি কোনও রক্ষণাবেক্ষণের কাজ সন্নিবেশ করে না।
(__bridge_retained T) op
অপারেনডকে কাস্ট করে, যার অবশ্যই গন্তব্য প্রকারের কাছে ধরে রাখতে সক্ষম অবজেক্ট পয়েন্টার টাইপ থাকতে হবে, যা অবশ্যই একটি অ-রক্ষণযোগ্য পয়েন্টার টাইপ হতে হবে। এআরসি স্থানীয় মানগুলিতে স্বাভাবিক অপ্টিমাইজেশনের সাপেক্ষে মানটি ধরে রাখে এবং প্রাপক +1 এর ভারসাম্য বজায় রাখার জন্য দায়বদ্ধ।
(__bridge_transfer T) op
গন্তব্য প্রকারভেদে অপারেন্ডকে কাস্ট করবে, যার অ-ধরে রাখতে সক্ষম পয়েন্টার টাইপ থাকতে হবে, যা অবশ্যই ধরে রাখতে সক্ষম অবজেক্ট পয়েন্টার টাইপ হতে হবে। স্থানীয় মূল্যবোধের উপর সাধারণ অপ্টিমাইজেশনের সাপেক্ষে এআরসি সংলগ্ন পূর্ণ-প্রকাশের শেষে মানটি প্রকাশ করবে।এআরসি নিয়ন্ত্রণের ও বাইরে অবজেক্টগুলি স্থানান্তর করার জন্য এই ক্যাসেটগুলি প্রয়োজনীয়; ধারণযোগ্য অবজেক্ট পয়েন্টার রূপান্তরকরণের বিভাগে যুক্তিটি দেখুন।
এআরসিকে ভারসাম্যহীন ধরে রাখতে বা মুক্তি দিতে যথাক্রমে এআরকে বোঝানোর জন্য একটি
__bridge_retained
বা__bridge_transfer
কাস্ট ব্যবহার করা দুর্বল রূপ।
কোন পরিস্থিতিতে আমি প্রতিটি ব্যবহার করব?
উদাহরণস্বরূপ, CAGradientLayer
এর একটি colors
সম্পত্তি রয়েছে যা CGColorRef
এস এর অ্যারে গ্রহণ করে । আমার অনুমান যে আমার __brige
এখানে ব্যবহার করা উচিত তবে ঠিক কেন আমার উচিত (বা করা উচিত নয়) তা অস্পষ্ট।