আমার মতে - এটি রিটেনকাউন্ট মেকানিজমের অনুরূপ কাজ করে। আপনি নিশ্চিত হতে পারবেন না যে বর্তমান মুহূর্তে আপনার নিজের পর্যবেক্ষক রয়েছেন। এমনকি যদি আপনি যাচাই করেন: স্ব-সংরক্ষণ - ইনফো - আপনি নিশ্চিতভাবে জানতে পারবেন না যে ভবিষ্যতে আপনার কাছে পর্যবেক্ষক থাকবে / থাকবে না।
ভালো লেগেছে retainCount । হতে পারে অবজারভেশন ইনফো পদ্ধতিটি ঠিক সেই ধরণের অকেজো নয়, তবে আমি এটি কেবল ডিবাগ উদ্দেশ্যেই ব্যবহার করি।
ফলস্বরূপ - আপনাকে কেবল এটি মেমরি পরিচালনার মতো করতে হবে। যদি আপনি কোনও পর্যবেক্ষক যুক্ত করেন - আপনার যখন প্রয়োজন হবে না তখনই সরিয়ে দিন। ভিউউইল অ্যাপয়ার / ভিউউইলডিস্পিয়ার ইত্যাদি পদ্ধতি ব্যবহার করার মতো। উদাহরণ:
-(void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self addObserver:nil forKeyPath:@"" options:NSKeyValueObservingOptionNew context:nil];
}
-(void) viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self removeObserver:nil forKeyPath:@""];
}
এবং এটি আপনাকে কিছু নির্দিষ্ট চেকের প্রয়োজন - আপনার নিজের শ্রেণি প্রয়োগ করুন যা পর্যবেক্ষকদের একটি অ্যারে পরিচালনা করে এবং এটি আপনার চেকগুলির জন্য ব্যবহার করে।
addObserver:
মধ্যেviewWillAppear:
এবং সঙ্গতিপূর্ণভাবেইremoveObserver:
মধ্যেviewWillDisappear:
কল সঠিকভাবে জোড়া হয়েছে। আমাকে দ্রুত সমাধান করতে হবে তাই আমি চেষ্টা-সমাধান সমাধানটি বাস্তবায়ন করতে যাচ্ছি এবং কারণটি আরও তদন্ত করতে একটি মন্তব্য করব।