2009-12-02 9 views
9

को NSString परिवर्तित मैं के बारे में सुरक्षित रूप से या ठीक से इस तरह के CGFloat और NSInteger के रूप में प्रकार में एक NSString परिवर्तित मेरा एक प्रश्न है, यह देखते हुए कि इन बस आवरण प्रकार है कि एप्पल कुछ कारकों के आधार पर अलग अलग पुरातन उपयोग करने के लिए बनाई गई (हैं उदाहरण के लिए, NSInteger 32-बिट आर्किटेक्चर पर typedef 'डी से int और 64-बिट आर्किटेक्चर पर long) है।ठीक CGFloat, NSInteger, आदि

उदाहरण के लिए, मैं जानता हूँ कि मैं [ someString intValue ] या [ someString longValue ] की तरह कुछ का उपयोग कर सकते हैं, लेकिन मैं बजाय कैसे कहते हैं कि मैं someString एक NSInteger बनना चाहते हैं, अंतर्निहित आदिम की शुद्धता की इजाजत दी संकलक द्वारा चुने जाने के लिए? NSInteger integer = [ someString intValue ] जैसे कुछ कहने से डेटा हानि होगी यदि someString को 64-बिट सिस्टम पर NSInteger से बनाया गया था, है ना? इस स्थिति से निपटने का सबसे अच्छा तरीका क्या है?

उत्तर

11

इसके बजाय integerValue का उपयोग करें। और int प्राप्त करने से केवल समस्या हो सकती है यदि स्ट्रिंग द्वारा प्रतिनिधित्व पूर्णांक 32-बिट INT_MAX से अधिक है, लेकिन यह अभी भी अधिक संगत विधि का उपयोग करना बेहतर है।

+0

आह, धन्यवाद। मैंने 'पूर्णांक वैल्यू' भी नहीं देखा। – LucasTizma

+0

यही कारण है कि हर बार एक प्रमुख ओएस संस्करण बाहर आने पर आपको रिलीज नोट्स पढ़ना चाहिए। कक्षाओं के लिए हमेशा कुछ आसान जोड़ होते हैं जिन्हें हमने कई वर्षों से जाना और प्यार किया है। – NSResponder

+1

CGFloat में कनवर्ट करने के बारे में क्या? – Casebash

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