সম্পর্কিত প্রশ্নের সাথে আমার উত্তরের সাথে সামঞ্জস্য রেখে আমি বিজে এর সাথে একমত নই এবং আপনাকে প্রথমে এনসিওপ্রেশন / এনএসওরেপেশন কিউয়ে জিসিডির দিকে নজর দেওয়ার পরামর্শ দিচ্ছি, যদি না পরেরটি আপনাকে এমন কিছু সরবরাহ করে যা জিসিডি না করে।
জিসিডির আগে, আমি একযোগে পরিচালনার জন্য আমার অ্যাপ্লিকেশনগুলির মধ্যে অনেকগুলি এনএসওপরেশন / এনএসওরেশনকুইজ ব্যবহার করেছি। তবে, যেহেতু আমি নিয়মিতভাবে জিসিডি ব্যবহার শুরু করেছি, আমি প্রায় পুরোপুরি এনএসওপরেশন এবং এনএসওপরেশন কুইজগুলিকে ব্লক এবং প্রেরণের সারি দিয়ে প্রতিস্থাপন করেছি। আমি অনুশীলনে উভয় প্রযুক্তি কীভাবে ব্যবহার করেছি এবং এগুলির উপর আমি যে প্রোফাইলটি করেছি তা থেকে এটি এসেছে।
প্রথমত, NSOperation এবং NSOperationQueues ব্যবহার করার সময় ওভারহেডের একটি অনিয়মিত পরিমাণ থাকে। এগুলি কোকো অবজেক্ট এবং এগুলিকে বরাদ্দ এবং বিলোপ করা দরকার। আমি যে আইওএস অ্যাপ্লিকেশনটিতে লিখেছিলাম যা 60 এফপিএসে 3-ডি দৃশ্যের রেন্ডার করে, আমি প্রতিটি রেন্ডার করা ফ্রেম এনপ্যাপুলেট করার জন্য এনএসওপিশন ব্যবহার করছিলাম। যখন আমি এটির প্রোফাইল দিই তখন এই এনএসঅপারেশনগুলির তৈরি এবং টিয়ারডাউনটি চলমান অ্যাপ্লিকেশনটিতে সিপিইউ চক্রের একটি উল্লেখযোগ্য অংশের জন্য অ্যাকাউন্টিং ছিল এবং জিনিসগুলি ধীর করে দিচ্ছিল। আমি এগুলিকে সাধারণ ব্লক এবং একটি জিসিডি সিরিয়াল সারি দিয়ে প্রতিস্থাপন করেছি এবং এটি ওভারহেড অদৃশ্য হয়ে গেছে, যা লক্ষণীয়ভাবে আরও ভাল রেন্ডারিংয়ের পারফরম্যান্সের দিকে নিয়ে গেছে। এটিই কেবল একমাত্র জায়গা নয় যেখানে আমি NSOperation ব্যবহার করে ওভারহেড লক্ষ্য করেছি এবং আমি এটি ম্যাক এবং আইওএস উভয় ক্ষেত্রেই দেখেছি।
দ্বিতীয়ত, ব্লক-ভিত্তিক প্রেরণ কোডের একটি কমনীয়তা রয়েছে যা এনএসপিটারেশনগুলি ব্যবহার করার সময় মেলানো শক্ত। কোনও ব্লকে কয়েকটি লাইন কোড গুটিয়ে রাখা এবং এটি সিরিয়াল বা সমবর্তী সারিতে সঞ্চালনের জন্য প্রেরণ করা এত অবিশ্বাস্যভাবে সুবিধাজনক, যেখানে এটি করার জন্য একটি কাস্টম এনএসওপ্রেশন বা এনএসআইভোকেশনওপেশন তৈরি করার জন্য আরও অনেক বেশি সহায়ক কোড প্রয়োজন। আমি জানি যে আপনি একটি এনএসব্লকওপ্রেশন ব্যবহার করতে পারেন তবে আপনি তখনও জিসিডিতে কিছু প্রেরণ করতে পারেন। আপনার আবেদনের সাথে সম্পর্কিত প্রসেসিংয়ের সাথে এই কোডগুলিকে ব্লকগুলিতে ইনলাইন করে রাখলে আমার মতে এই পদ্ধতিতে আবশ্যক পৃথক পদ্ধতি বা কাস্টম এনএসওপরেশন না থাকার চেয়ে ভাল কোড সংস্থার দিকে নিয়ে যায়।
NSOperation এবং NSOperationQueues এর এখনও খুব ভাল ব্যবহার রয়েছে। জিসিডির নির্ভরতার কোনও বাস্তব ধারণা নেই, যেখানে এনএসওপরেশনকুইজগুলি জটিল জটিল নির্ভরতা গ্রাফ স্থাপন করতে পারে। আমি মুষ্টিমেয় কিছু ক্ষেত্রে এর জন্য NSOperationQueues ব্যবহার করি।
সামগ্রিকভাবে, আমি সাধারণত টাস্কটি সম্পাদনকারী সর্বোচ্চ স্তরের বিমূর্ত ব্যবহার করার পক্ষে পক্ষপাতিত্ব করি, এটি এমন একটি ক্ষেত্রে যেখানে আমি জিসিডির নিম্ন স্তরের এপিআইয়ের পক্ষে তর্ক করি। আমি যে আইওএস এবং ম্যাক বিকাশকারীদের সাথে এটি সম্পর্কে কথা বলেছি তাদের মধ্যে, বৃহত সংখ্যাগরিষ্ঠ লোকেরা এসএসপি সমর্থন না করে ওএস সংস্করণগুলিকে টার্গেট না করে (এনওএস ৩.০ এবং স্নো চিতাবাঘের পূর্বে) জিএসসি ব্যবহার করতে পছন্দ করে।