2011-05-21 19 views
8

पर आधारित परिभाषा मैं अपने आईफोन ऐप को आईपैड के साथ संगत बनाने की कोशिश कर रहा हूं। एक शीर्षलेख फ़ाइल में मैंने कुछ स्थिरांक स्थापित किए हैं। बड़ी स्क्रीन के कारण मैं आईफोन पर आईपैड पर छवियों के लिए कुछ स्थिरांकों का उपयोग करना चाहता हूं। मैं यह पूरा करने के इंटरनेट पर कुछ सुझाव मिले:# प्लेटफार्म [आईफोन या आईपैड]

#if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
#define imgAmcWidth 656.0f 
#define imgAmcHeight 36.0f 
#else 
#define imgAmcWidth 240.0f 
#define imgAmcHeight 20.0f 
#endif 

यह मेरी जरूरतों को पूरा करने लगता है। दुर्भाग्य से एक्सकोड 4 इस त्रुटि को संकलित करने में विफल रहता है: 'टोकन "[" प्रीप्रोसेसर में मान्य नहीं है ..' [एलएलवीएम जीसीसी 4.2]। मैं क्या गलत कर रहा हूँ?

उत्तर

5

UI_USER_INTERFACE_IDIOM और UIUserInterfaceIdiomPad प्रीप्रोसेसर चीजें नहीं हैं। वे, आईओएस का हिस्सा हैं तो आपको क्या करना चाहिए:

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { 
    <define your constants here> 
} else { 
    <define your constants here> 
} 

भी देखें this यदि आप करने के लिए 3.2

+0

Thx - यही मैंने सोचा था। लेकिन यह विधि वर्गों के बीच स्थिरांक साझा करने की अनुमति नहीं देती है? – Ghislain

22

iOS संस्करण पिछले समर्थन करने के लिए शायद नहीं सबसे सुरुचिपूर्ण समाधान लेकिन का एक प्रमुख फिर से लिखने को रोकने के लिए एक ओर जहां की योजना कोड मैंने निम्नलिखित चाल का उपयोग करने का निर्णय लिया:

#define iPad UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 
#define imgAmcWidth   (iPad ? 639.0f : 240.0f) 
// etc.. 
+2

आपको अपनी मैक्रो परिभाषा के चारों ओर कोष्ठक रखना चाहिए, या आप अजीब प्राथमिकता या ऑपरेंड मिस्चैच त्रुटियों के साथ हवादार हो सकते हैं। कोष्ठक आपके संदर्भों को अधिक संदर्भों में उपयोग करने के लिए "सुरक्षित" बनाते हैं। – Dalbergia

+0

यदि इस विधि का उपयोग स्थिरांक के लिए किया जाता है जिसका संदर्भ बहुत अधिक है, तो यह ऐप को एक टन धीमा कर देगा। – Letrstotheprez

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