@ ক্রিজের পরামর্শের সামান্য পরিবর্তন, যাতে কনস্ট্যান্টস শিরোনাম ফাইলটি পিএইচচে অন্তর্ভুক্ত করতে হয় তবে এটি সঠিকভাবে কাজ করে, যা স্বাভাবিক rather যেহেতু মূলটি পিএইচসি-তে আমদানি করা হয়েছে তাই এটি এটিকে .m
ফাইলে পুনরায় লোড করবে না এবং এর ফলে আপনি কোনও চিহ্ন পাবেন না এবং লিঙ্কারটি অসন্তুষ্ট।
যাইহোক, নিম্নলিখিত পরিবর্তন এটি কাজ করতে দেয়। এটি কিছুটা সংশ্লেষিত, তবে এটি কার্যকর।
আপনি প্রয়োজন হবে 3 ফাইল, .h
ফাইল যা ধ্রুবক সংজ্ঞা, হয়েছে .h
ফাইল এবং .m
ফাইল, আমি ব্যবহার করব ConstantList.h
, Constants.h
এবং Constants.m
যথাক্রমে। বিষয়বস্তু Constants.h
সহজভাবে হয়:
// Constants.h
#define STR_CONST(name, value) extern NSString* const name
#include "ConstantList.h"
এবং Constants.m
ফাইলটি দেখে মনে হচ্ছে:
// Constants.m
#ifdef STR_CONST
#undef STR_CONST
#endif
#define STR_CONST(name, value) NSString* const name = @ value
#include "ConstantList.h"
পরিশেষে, ConstantList.h
ফাইলটির আসল ঘোষণা রয়েছে এবং এটি হ'ল:
// ConstantList.h
STR_CONST(kMyConstant, "Value");
…
কয়েকটি বিষয় লক্ষণীয়:
ম্যাক্রোটি ব্যবহারের জন্য এটি .m
ফাইল করার পরে ফাইলটিতে #undef
ম্যাক্রোর নতুন সংজ্ঞা দিতে হয়েছিল।
আমাকে সঠিকভাবে কাজ করার জন্য এর #include
পরিবর্তে ব্যবহার #import
করতে হয়েছিল এবং পূর্ববর্তী পূর্বনির্ধারিত মানগুলি দেখে সংকলকটি এড়াতে হয়েছিল।
এটির জন্য আপনার পিএইচসি (এবং সম্ভবত পুরো প্রকল্প) এর পুনরায় সংকলন প্রয়োজন যখনই কোনও মান পরিবর্তন করা হয়, যা এগুলি স্বাভাবিক হিসাবে আলাদা (এবং সদৃশ) করা হয় তা নয়।
আশা করি এটি কারও জন্য সহায়ক।