में #define मैक्रोज़ के साथ उद्देश्य-सी कोड का उपयोग कैसे करें I मेरा एक स्विफ्ट प्रोजेक्ट में एक तृतीय-पक्ष उद्देश्य-सी लाइब्रेरी का उपयोग करने का प्रयास कर रहा हूं। मेरे पास पुस्तकालय सफलतापूर्वक एक्सकोड में आयात किया गया है, और मैंने <Project>-Bridging-Header.h
फ़ाइल बनाई है जो मुझे स्विफ्ट में मेरे उद्देश्य-सी कक्षाओं का उपयोग करने की अनुमति दे रही है।स्विफ्ट
मुझे लगता है कि एक समस्या में चल रहा है हालांकि: उद्देश्य-सी कोड में Constants.h
फ़ाइल मैक्रो #define AD_SIZE CGSizeMake(320, 50)
के साथ फ़ाइल शामिल है। मेरे <Project>-Bridging-Header.h
में Constants.h
आयात करने से वैश्विक स्थिर AD_SIZE
का परिणाम नहीं मिलता है जो मेरा स्विफ्ट ऐप उपयोग कर सकता है।
मैं कुछ शोध किया और देखा कि एप्पल प्रलेखन here under "Complex Macros" का कहना है कि
"स्विफ्ट में, आप एक ही परिणाम प्राप्त करने के कार्य करता है और जेनरिक का उपयोग कर सकते हैं किसी भी समझौते के बिना [जटिल मैक्रो के रूप में]। इसलिए, जटिल मैक्रोज़ सी और ऑब्जेक्टिव-सी स्रोत फ़ाइलों में हैं उपलब्ध कराया जाता है नहीं अपने स्विफ्ट कोड के लिए। "
पढ़ने उसके बाद, मैं इसे स्विफ्ट में let AD_SIZE = CGSizeMake(320, 50)
निर्दिष्ट करके ठीक काम मिल गया है, लेकिन मैं पुस्तकालय के साथ भावी संगतता को इस स्थिति में बनाए रखना चाहता हूं कि ये मूल्य मुझे बिना जानने के बदल जाए।
स्विफ्ट या मेरे ब्रिजिंग हेडर में इसके लिए कोई आसान फिक्स है? यदि नहीं, #define AD_SIZE CGSizeMake(320, 50)
Constants.h
में #define AD_SIZE CGSizeMake(320, 50)
को प्रतिस्थापित करने का कोई तरीका है और पुराने AD_SIZE
मैक्रो का उपयोग करने वाले किसी मौजूदा उद्देश्य-सी ऐप्स के साथ चीजों को पीछे-संगत रखें?
क्या आपने मैक्रो के बजाय 'स्थिर CGSize' का उपयोग करने का प्रयास किया है? – jtbandes
मेरा उत्तर –