প্রতিনিধি সম্পত্তি ঘোষণার ক্ষেত্রে 'দুর্বল' এবং 'নির্ধারিত' মধ্যে পার্থক্য কী


87

এর মধ্যে পার্থক্য কী:

@property (nonatomic, weak) id  <SubClassDelegate> delegate; 

এবং এই:

@property (nonatomic, assign) id  <SubClassDelegate> delegate; 

আমি প্রতিনিধিদের জন্য সম্পত্তি ব্যবহার করতে চাই।

উত্তর:


153

weakএবং এর মধ্যে একমাত্র পার্থক্যটি assignহ'ল যদি কোনও বিষয়টিকে কোনও weakসম্পত্তি নির্দেশ করে তবে তা নির্বিঘ্নিত হয়, তবে weakপয়েন্টারের মান সেট করা হবে nil, যাতে আপনি কখনও আবর্জনা অ্যাক্সেসের ঝুঁকি না চালান। আপনি যদি ব্যবহার করেন assignতবে তা ঘটবে না, সুতরাং যদি বস্তুটি আপনার অধীনে থেকে বিচ্ছিন্ন হয়ে যায় এবং আপনি এটি অ্যাক্সেস করার চেষ্টা করেন তবে আপনি আবর্জনা অ্যাক্সেস করতে পারবেন।

অবজেক্টিভ-সি অবজেক্টের জন্য, আপনি যদি এমন পরিবেশে থাকেন যেখানে আপনি ব্যবহার করতে পারেন weakতবে আপনার এটি ব্যবহার করা উচিত।


16
আপনি কি জানেন যে কিছু কোকো টাচ ফ্রেমওয়ার্ক ক্লাস এখনও প্রতিনিধিদের জন্য নিয়োগ ব্যবহার করছে? উদাহরণস্বরূপ, ইউআইএসপ্লিকডিসপ্লে কনট্রোলারের প্রতিনিধি এখনও নির্ধারিত। কেন এটি কখনও আপডেট করা হয়নি?
পাউনার

@ পাউনার দেখে মনে হচ্ছে এটি আইওএস 8.0- এ
অবহিত

এখানে একটি অবহেলিত উদাহরণ রয়েছে: এমনকি এর প্রতিনিধিদের জন্যও UITableViewরয়েছে assign:@property (nonatomic, assign) id <UITableViewDelegate> delegate;
ক্রিস নোলেট

4
@ ক্রিসনলেট, কারণ সম্ভবত তারা এখনও অভ্যন্তরীণভাবে এমআরসি (ম্যানুয়াল রেফারেন্স গণনা) ব্যবহার করছে।
মার্কো সেরো

4
আজকের হিসাবে, ইউআইটিএবলভিউর প্রতিনিধিদের উদাহরণ এখন: @ প্রপার্টি (ননোটমিক, দুর্বল, ননাল) আইডি <ইউআইটিবেল ভিউ ডেলেগেট> প্রতিনিধি; সুতরাং এটি আর বৈধ উদাহরণ নয়।
sdoowhsoj
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.