এনএসপিআরমিটারস্রেট কী?


উত্তর:


115

কোনও পদ্ধতির প্যারামিটারটি nil0 নয় বা না তা পরীক্ষার এটি একটি সহজ উপায় So যদি এটি সেট না করা থাকে, ম্যাক্রো অ্যাপ্লিকেশনটি বাতিল করতে এবং সেই লাইনে একটি ত্রুটি তৈরি করে। সুতরাং:

- (void)someMethod:(id)someObjectThatMustNotBeNil
{
  // Make sure that someObjectThatMustNotBeNil is really not nil
  NSParameterAssert( someObjectThatMustNotBeNil );
  // Okay, now do things
}

প্রোগ্রামার দ্বারা পদ্ধতি / এপিআই সঠিকভাবে আহ্বান করা হচ্ছে তা নিশ্চিত করার প্রাক শর্তগুলি একটি সহজ উপায়। ধারণাটি হ'ল যদি কোনও প্রোগ্রামার পূর্বশর্ত লঙ্ঘন করে তবে অ্যাপ্লিকেশনটি শীঘ্রই সমাপ্ত হবে - আশা করি ডিবাগিং এবং বেসিক পরীক্ষার সময়।

NSParameterAssert যে কোনও অভিব্যক্তি সত্য বলে মূল্যায়ন করে তা পরীক্ষার জন্য ব্যবহার করা যেতে পারে, সুতরাং আপনি এটির মতো এটি ব্যবহার করতে পারেন:

NSParameterAssert( index >= 0 ); // ensure no negative index is supplied

NSParameterAssert () ম্যাক্রোর জন্য অ্যাপলের ডকুমেন্টেশন


4
আপনার কোডে ব্যতিক্রমগুলি নিশ্চিত করার বিষয়টি নিশ্চিত করুন, অন্যথায় যদি দাবিটি সত্য হয় তবে এটি আপনার অ্যাপ্লিকেশানটি ক্র্যাশ করবে।
লুসিয়াস

14
@ লুসিয়াস: বিতরণকৃত অ্যাপ্লিকেশনটিতে শর্তাদি যাচাই করার জন্য জমিগুলি ব্যবহার করা হবে না, তারা বিকাশের সময় ত্রুটিগুলি ধরতে পারে। চুপচাপ ব্যর্থ হওয়ার পরিবর্তে কোনও খারাপ অবস্থার (কোনও নিব-এর সাথে একটি সংযোগহীন আউটলেটের মতো) কিছু ক্রাশ হওয়ার কারণ, আপনাকে তাড়াতাড়ি সমস্যাগুলি খুঁজে পেতে দেয়। ম্যাক্রো বা #ifdefs এর মাধ্যমে বিতরণের সময় অনেক লোক এটিকে অক্ষম করে।
ব্র্যাড লারসন

4
@ লুসিয়াস - পূর্বশর্তগুলি মেটানো না হলে লক্ষ্যটি হ'ল অ্যাপ্লিকেশনটি বাতিল করে দেওয়া। এটি প্রোগ্রামারকে তাত্ক্ষণিকভাবে জানতে দেয় যে সে কোনও ভুল কাজ করেছে। কোকোতে থাকা দৃ evalu় মূল্যায়নগুলি মূল্যায়ন না করে তা নিশ্চিত করার জন্য আপনি এনএস_ব্লক_এএসআরটিএসস ম্যাক্রো সংজ্ঞায়িত করতে পারেন। এটি তাদের অক্ষম করে, তবে ধারণাটি হ'ল পার্শ্ব প্রতিক্রিয়াগুলি বা ধীর কোডটি ক্র্যাশ হওয়ার বিরুদ্ধে রক্ষা করার চেয়ে মৃত্যুদণ্ড কার্যকর করা থেকে রক্ষা করা - উত্পাদনের দ্বারা, সঠিকভাবে যদি ব্যবহার করা হয় তবে দৃser়তাগুলি কখনও ট্রিগার করা উচিত নয়।
জেসন কোকো

4
উত্পাদনের কাজগুলি করার সময় কি এই দাবীগুলি সরল উপায়ে সরিয়ে ফেলা সম্ভব? আইএমএইচও এগুলি প্রোগ্রামিংয়ের ত্রুটিগুলি ধরার জন্য উন্নয়নের সময় সেরা ব্যবহার করা হয় (উপরে মন্তব্যে উল্লিখিত হিসাবে))
জোহান কার্লসন

4
@ জোহানকার্লসন এটি Releaseকনফিগারেশনের টেম্পলেটগুলির বর্তমান সংস্করণগুলিতে (এটি বেশ পিছনে ফিরে যায়) ডিফল্টরূপে সেট করা সম্ভব । আপনি সেট করে এটিকে নিয়ন্ত্রণ করতে পারেন ENABLE_NS_ASSERTIONS, অথবা সংজ্ঞা দ্বারা Xcode এর নতুন সংস্করণে নির্মাণ সেটিংস NS_BLOCK_ASSERTIONSম্যাক্রো এবং একটি প্রকল্প সেটিং * সক্ষম ফাউন্ডেশন Assertions` আছে 1. এটি সেটিং Xcode 5 যে সেট বিল্ড সেটিং এবং অক্ষমতা Yesমধ্যে Debugএবং Noমধ্যে Releaseকনফিগারেশন।
জেসন কোকো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.