যদি আপনি এমন আচরণের সাথে মেলে এমন কিছু প্রত্যাশা (বা আকাঙ্ক্ষা) করছেন:
t=0 add an operation to the queue. queueucount increments to 1
t=1 add an operation to the queue. queueucount increments to 2
t=2 add an operation to the queue. queueucount increments to 3
t=3 operation completes, queuecount decrements to 2
t=4 operation completes, queuecount decrements to 1
t=5 operation completes, queuecount decrements to 0
<your program gets notified that all operations are completed>
আপনার সচেতন হওয়া উচিত যে যদি "শর্ট" ক্রিয়াকলাপগুলিকে একটি কাতারে যুক্ত করা হয় তবে আপনি পরিবর্তে এই আচরণটি দেখতে পাবেন (কারণ কাতারে যুক্ত হওয়ার অংশ হিসাবে অপারেশনগুলি শুরু হয়েছে):
t=0 add an operation to the queue. queuecount == 1
t=1 operation completes, queuecount decrements to 0
<your program gets notified that all operations are completed>
t=2 add an operation to the queue. queuecount == 1
t=3 operation completes, queuecount decrements to 0
<your program gets notified that all operations are completed>
t=4 add an operation to the queue. queuecount == 1
t=5 operation completes, queuecount decrements to 0
<your program gets notified that all operations are completed>
আমার প্রকল্পে আমাকে জানতে হবে শেষ অপারেশনটি কখন শেষ হয়েছিল, প্রচুর ক্রিয়াকলাপটি সিরিয়াল NSOperationQueue (অর্থাত্, ম্যাকসকন্ট্রোরঅপারেশনকন্ট = 1) এ যুক্ত হওয়ার পরে এবং যখন তারা সমস্ত সম্পন্ন করেছিল তখনই।
গুগলিং আমি এই প্রশ্নের জবাবে একজন অ্যাপল বিকাশকারীর কাছ থেকে এই বিবৃতিটি খুঁজে পেয়েছি "সিরিয়াল এনএস্পেরেশনকিউ ফিফো?" -
যদি সমস্ত ক্রিয়াকলাপের একই অগ্রাধিকার থাকে (যা অপারেশনটিকে একটি সারি যুক্ত করার পরে পরিবর্তন করা হয় না) এবং সমস্ত ক্রিয়াকলাপ সর্বদা হয় - isReady == হ্যাঁ অপারেশন কাতারে উপস্থিত হওয়ার পরে, তবে একটি সিরিয়াল NSOperationQueue ফিফো।
ক্রিস কেন কোকো ফ্রেমওয়ার্কস, অ্যাপল
আমার ক্ষেত্রে এটি শেষের অপারেশনটি কাতারে কখন যুক্ত হয়েছিল তা জানা সম্ভব। সুতরাং শেষ অপারেশন যুক্ত হওয়ার পরে, আমি কাতারে আরও অপারেশন যুক্ত করছি, নিম্ন অগ্রাধিকারের, যা সারিটি খালি করা হয়েছে বলে বিজ্ঞপ্তি পাঠানো ছাড়া কিছুই করে না। অ্যাপলের বিবৃতি দেওয়া, এটি নিশ্চিত করে যে সমস্ত ক্রিয়াকলাপ সম্পন্ন হওয়ার পরে কেবলমাত্র একটি নোটিশ পাঠানো হবে।
যদি অপারেশনগুলি এমনভাবে যুক্ত করা হয় যা শেষটিকে সনাক্ত করতে দেয় না, (উদাহরণস্বরূপ, অ-সংজ্ঞাবাদী) তবে আমি মনে করি যে আপনাকে উপরে উল্লিখিত কেভিও পদ্ধতির সাথে যেতে হবে, অতিরিক্ত গার্ড যুক্তি যুক্ত করে আরও চিহ্নিত করার চেষ্টা করার চেষ্টা করা হয়েছে অপারেশন যোগ করা যেতে পারে।
:)