2011-03-30 14 views
11

क्या के बीच सबसे अधिक उपयुक्त रहेगी: की स्मृति की खपत बिंदु सेNSString बनाम स्थिर निरंतर बनाम परिभाषित - देखने की मेमोरी बिंदु

#define kYes @"Yes" 

और

static NSString *const kYes = @"Yes"; 

और

NSString *kYes = @"Yes"; 

राय। ध्यान में रखते हुए कि आवेदन में हजारों स्थिरांक होंगे।

+2

आपका मतलब है '# परिभाषित kYes @ "हां" '? – kennytm

उत्तर

11

मेमोरी स्टैंड पॉइंट से - स्थैतिक चर बेहतर है, क्योंकि इसे एक बार संदर्भित किया जाता है। #define सभी घटनाओं में स्ट्रिंग को सम्मिलित करेगा, उसके द्वारा - स्मृति उपयोग को गुणा करना ... (तब तक जब तक जीसीसी एक ही निरंतर स्ट्रिंग घटनाओं को अनुकूलित नहीं कर लेता है, जो वास्तव में हो सकता है। उस मामले में - कोई अंतर नहीं है)

+4

* जब तक जीसीसी एक ही स्थिर स्ट्रिंग घटनाओं को अनुकूलित नहीं करता है * - जो मामला है। – kennytm

+0

क्या इसका मतलब यह है कि यदि 10 स्थानों पर # डिफाईन का उपयोग किया जाता है, तो यह स्ट्रिंग को प्रतिस्थापित करेगा और अंततः अधिक ऑब्जेक्ट्स बनाएगा। उदा: अगर ([एक isqualToString: केवाईएस]) {} ... जो होगा ([एक isEqualToString: @ "हाँ"]) {}, 1 वस्तु। एक और जगह हम एनएसएसटींग * स्थिति = केवाईएस को intialize, जो होगा .. NSString * स्थिति = @ "हां", दूसरी वस्तु – andyPaul

संबंधित मुद्दे