জেনেরিক উত্তরটি হবে "যত তাড়াতাড়ি আপনার আর বিজ্ঞপ্তিগুলির প্রয়োজন নেই"। এটি অবশ্যই সন্তোষজনক উত্তর নয় answer
আমি সুপারিশ করব, আপনি যে ক্লাসগুলির [notificationCenter removeObserver: self]
পদ্ধতিতে একটি কল যুক্ত করেছেন dealloc
, যা আপনি পর্যবেক্ষক হিসাবে ব্যবহার করার ইচ্ছা করছেন, কারণ পর্যবেক্ষককে পরিষ্কারভাবে নিবন্ধন করার এটি সর্বশেষ সুযোগ। এটি কেবলমাত্র মৃত অবজেক্টগুলিকে বিজ্ঞপ্তি কেন্দ্রের কারণে ক্র্যাশগুলির হাত থেকে রক্ষা করবে। এটি আপনার কোডটি বিজ্ঞপ্তিগুলি প্রাপ্তির বিরুদ্ধে রক্ষা করতে পারে না, যখন আপনার অবজেক্টগুলি এখনও / এখনও এমন অবস্থায় নেই যেখানে তারা সঠিকভাবে বিজ্ঞপ্তিটি পরিচালনা করতে পারে। এর জন্য ... উপরে দেখুন
সম্পাদনা (যেহেতু উত্তরটি আমার ধারণার চেয়ে বেশি মন্তব্য আঁকবে) আমি এখানে যা বলার চেষ্টা করছি তা হ'ল: বিজ্ঞপ্তি কেন্দ্র থেকে পর্যবেক্ষককে অপসারণ করা কখন ভাল as সে সম্পর্কে সাধারণ পরামর্শ দেওয়া সত্যিই কঠিন, কারণ এটি নির্ভর করে:
- আপনার ব্যবহারের ক্ষেত্রে (কোন বিজ্ঞপ্তিগুলি পালন করা হয়? তারা কখন পাঠায়?)
- পর্যবেক্ষকের বাস্তবায়ন (বিজ্ঞপ্তিগুলি গ্রহণের জন্য এটি কখন প্রস্তুত? কখন এটি আর প্রস্তুত নয়?)
- পর্যবেক্ষকের উদ্দেশ্যপ্রণোদিত জীবনকাল (এটি কি অন্য কোনও বস্তুর সাথে আবদ্ধ হয়, বলুন, দেখুন বা দেখুন নিয়ামক?)
- ...
সুতরাং, আমি যে সর্বোত্তম সাধারণ পরামর্শটি নিয়ে আসতে পারি তা: আপনার অ্যাপ্লিকেশনটি রক্ষা করতে। কমপক্ষে একটি সম্ভাব্য ব্যর্থতার বিরুদ্ধে, removeObserver:
নাচটি করুন dealloc
, যেহেতু এটিই শেষ বিন্দু (বস্তুর জীবনে), যেখানে আপনি এটি পরিষ্কারভাবে করতে পারেন। এর অর্থ এই নয়: "না dealloc
বলা পর্যন্ত কেবল অপসারণ স্থগিত করুন এবং সবকিছু ঠিক থাকবে"। পরিবর্তে, অবজেক্টটি বিজ্ঞপ্তিগুলি পাওয়ার জন্য আর প্রস্তুত (বা প্রয়োজনীয়) না হওয়ার সাথে সাথে পর্যবেক্ষককে সরিয়ে ফেলুন । এটাই ঠিক সঠিক মুহূর্ত। দুর্ভাগ্যক্রমে, উপরে বর্ণিত কোনও প্রশ্নের উত্তর না জেনে, আমি অনুমানও করতে পারি না, কখন সেই মুহূর্তটি হবে।
আপনি সর্বদা সুরক্ষিতভাবে removeObserver:
কোনও বস্তুকে একাধিকবার করতে পারেন (এবং প্রদত্ত পর্যবেক্ষকের সাথে প্রথম প্রথম কলটি সমস্তই নোপস হবে)। সুতরাং: এটি dealloc
নিশ্চিত করার জন্য এটি (আবার) করার বিষয়ে চিন্তা করুন, তবে প্রথম এবং সর্বাগ্রে: উপযুক্ত মুহুর্তে এটি করুন (যা আপনার ব্যবহারের ক্ষেত্রে নির্ধারিত হয়)।