এক্সকোড 5 এবং আইওএস 7 এর জন্য আপডেট
দ্রষ্টব্য: একটি রিলিজ বিল্ডে মুদ্রণ () বিবৃতি মুছে ফেলার জন্য একটি এক্সকোড 7 / সুইফট 2.1 সমাধানের জন্য , আমার উত্তরটি এখানে সন্ধান করুন ।
হ্যাঁ, আপনার প্রকাশের কোডে আপনার কোনও এনএসএলগ বিবৃতি অপসারণ করা উচিত, কারণ এটি কেবল আপনার কোডকে ধীর করে দেয় এবং এটি কোনও প্রকাশ সংস্করণে ব্যবহার করে না। ভাগ্যক্রমে, এক্সকোড 5 (আইওএস 7) এ, রিলিজ বিল্ডগুলিতে আপনার সমস্ত এনএসএলগ বিবৃতি 'স্বয়ংক্রিয়ভাবে' অপসারণ করা আশ্চর্যরকম সহজ। সুতরাং কেন এটি না।
প্রথমে 3 টি পদক্ষেপ নিতে হবে, তারপরে কিছু ব্যাখ্যা
1) আপনার এক্সকোড প্রকল্পে, 'yourProjectName-prefix.pch' ফাইলটি সনাক্ত করুন (সাধারণত আপনি এটি 'সমর্থিত ফাইলগুলি' গোষ্ঠীর অধীনে পাবেন যেখানে আপনার মেইন.এম ফাইলটি অবস্থিত
2) '.pch' ফাইলের শেষে এই 3 টি লাইন যুক্ত করুন:
#ifndef DEBUG
#define NSLog(...);
#endif
3) আপনার 'ডিবাগ' এবং 'রিলিজ' সংস্করণের মধ্যে পার্থক্য পরীক্ষা করুন। এটি করার একটি উপায় হ'ল 'সম্পাদনা স্কিম' -> 'অ্যাপ্লিকেশন নাম চালান' -> ট্যাবের অধীনে 'তথ্য' ডিবাগ এবং রিলিজের মধ্যে ড্রপ-ডাউন বাক্স ব্যবহার করে নির্বাচন করুন। রিলিজ সংস্করণে আপনি ডিবাগ কনসোলে কোনও এনএসএলগ আউটপুট দেখতে পাবেন না!
এই সব কিভাবে কাজ করে?
প্রথমত, একজনকে অবশ্যই জেনে রাখা উচিত যে একটি প্রিপ্রেসেসর তুলনামূলকভাবে 'বোবা' এবং সংকলকটি কল করার আগে কেবল একটি 'টেক্সট রিপ্লেসার' হিসাবে কাজ করে। এটি #define
বিবৃতি অনুসরণ করে যা কিছু আপনি '# সংজ্ঞায়িত' করে প্রতিস্থাপন করে ।
#define NSLog(...);
(...)
বন্ধনীর মধ্যে 'কিছু' () জন্য দাঁড়িয়েছে। মনও ;
শেষে। এটি কঠোরভাবে প্রয়োজনীয় নয় কারণ সংকলকটি এটিকে অপ্টিমাইজ করবে, তবে আমি এটি সেখানে রাখতে চাই, কারণ এটি আরও 'সঠিক'। আমাদের পরে #define
তাই প্রাক প্রসেসর 'কিছুই' সঙ্গে এটি প্রতিস্থাপন করবে, এবং তাই এটা শুধু সম্পূর্ণ লাইন বর্জন করা হবে, থেকে শুরু, 'কিছুই' হল NSLog...
পর্যন্ত এবং সহ ;
।
সংজ্ঞায়িত বিবৃতিগুলি #ifdef
(যদি সংজ্ঞায়িত হয়) বা #ifndef
(সংজ্ঞায়িত না হয়) ব্যবহার করে শর্তযুক্ত করা যায়
এখানে আমরা লিখছি #ifndef DEBUG
, যার অর্থ 'যদি প্রতীকটি DEBUG সংজ্ঞায়িত না হয়'। #ifdef
অথবা #ifndef
হতে প্রয়োজন সঙ্গে 'বন্ধ'#endif
ডি-বিল্ড মোডটি যখন 'ডিইবিইউজি' হয় তখন এক্সকোড 5 ডিফল্টরূপে আমাদের জন্য 'ডিইবিইউজি' প্রতীকটি সংজ্ঞায়িত করে। 'রিলিজ' এ এটি সংজ্ঞায়িত করা হয়নি। আপনি এটি আপনার প্রকল্প সেটিংসের অধীনে যাচাই করতে পারেন, ট্যাব 'বিল্ড সেটিংস' -> 'অ্যাপল এলএলভিএম 5.0 - প্রিপ্রোসেসিং' -> প্রিপ্রসেসর ম্যাক্রোস বিভাগে স্ক্রোল করুন। আপনি দেখতে পাবেন যে প্রতীকটি 'ডিবিইউজি' রিলিজ বিল্ডগুলির জন্য সংজ্ঞায়িত করা হয়নি!
অবশেষে .pch ফাইলটি Xcode দ্বারা স্বয়ংক্রিয়ভাবে তৈরি হয় এবং সংকলনের সময় স্বয়ংক্রিয়ভাবে প্রতিটি উত্স ফাইলে অন্তর্ভুক্ত হয়। সুতরাং এটি মনে হয় আপনি #define
সম্পূর্ণরূপে আপনার প্রতিটি উত্স ফাইলের মধ্যে রাখতেন ।