2015-09-12 9 views
14

के लिए अनावश्यक जांच मैं एक स्विफ्ट वर्ग जो विभिन्न तैनाती लक्ष्य के साथ कई लक्ष्यों के खिलाफ जुड़ा हुआ है है, मुख्य परियोजना iOS 7 न्यूनतम आवश्यकता है और वहाँ iOS 8 लक्ष्य के साथ एक विस्तार है।चेतावनी: न्यूनतम तैनाती लक्ष्य

अब जब मैं परियोजना संकलन, संकलक कोड की इस पंक्ति पर चेतावनी फेंकता है:

if #available(iOS 8.0, *) { ... } 

" 'iOSApplicationExtension' के लिए अनावश्यक जांच; न्यूनतम तैनाती लक्ष्य सुनिश्चित करता है गार्ड हमेशा सच हो जाएगा"

मैं बिल्ड सेटिंग्स विकल्पों की जांच की है और तेजी से चेतावनी मारने के लिए कोई स्विच नहीं मिला है।

if #available(iOS 8.0, iOSApplicationExtension 8.0, *) { ... } 

इस कष्टप्रद संदेश को दबाने के लिए कोई तरीका है:

मैं इस लाइन द्वारा लेकिन सफलता नहीं मिली अलग iOSApplicationExtension संस्करण लक्ष्य को परिभाषित करने की कोशिश की?

+1

देखने के लिए इस लिंक पर आप के साथ मदद हो सकता है https://forums.developer.apple.com/thread/15030 –

+1

सबसे अधिक संभावना विस्तार के लिए अपने न्यूनतम तैनाती लक्ष्य आईओएस 8. है यह है कि '#available मतलब होगा (आईओएस 8.0, 0) हमेशा सत्य होगा, यानी यह अनावश्यक है। –

+0

@ILikeTau एप्लिकेशन एक्सटेंशन केवल आईओएस 8 पर काम करते हैं। यही कारण है कि मैंने ऐसा किया। – Mousavian

उत्तर

1

मिले चेतावनी मौन करने एक बदसूरत वैकल्पिक हल है, लेकिन मुझे आशा है कि वहाँ एक बेहतर तरीका है:

में आईओएस 8 लक्ष्यों सेटिंग्स का निर्माण, मैं सेटिंग्स बिल्ड में एक precompile झंडा परिभाषित -> स्विफ्ट संकलक - कस्टम झंडे -> अन्य स्विफ्ट झंडे:

#if iOS8target 
    // iOS 8+ compatible code 
#else 
    if #available(iOS 8.0, *) { 
     // repeat iOS 8+ compatible code again! 
    } else { 
     // iOS 7 code 
    } 
#endif 
:

डी iOS8target

तो मैं इस तरह से करने के लिए कोड बदल

यह पुनर्संशोधित नहीं और बदसूरत है, लेकिन यह काम करता है!

अद्यतन: एक तेज संकलक स्विच -suppress-warnings सभी चेतावनियों को छोड़ देना नहीं है। लेकिन यह उपयोगी चेतावनियों को भी दबा देता है। इसके अलावा, अगर वहाँ जो चेतावनी का उत्सर्जन करता है केवल एक विशिष्ट फ़ाइल है, तो आप -w झंडा बिल्डिंग के चरण फलक में उपयोग कर सकते हैं। यह उपयोगी चेतावनियों को भी दबाएगा लेकिन एक फ़ाइल तक ही सीमित होगा।

+4

मैं चेतावनी के साथ रहना चाहता हूं: एस – nobre

1

Cocoapod (0.39.0 के बाद) की अगली फिल्म इस मुद्दे को संबोधित किया जाना चाहिए। अधिक जानकारी के लिए this देखें।

0

कृपया अपने सामान्य में अपने परिनियोजन लक्ष्य की जांच करें और 9.0 से 7.0 या उससे कम तक सेट करें। यह चेतावनी स्वचालित रूप से हटा दी जाएगी।

+0

ऐसी अलग-अलग परियोजनाएं हैं जो समान स्रोत फ़ाइल का उपयोग करती हैं। इसे बदल नहीं सकता आईओएस 8 + से बहिष्कृत होने पर कुछ को 8+ – Mousavian

+0

होने की आवश्यकता है, तो आपको पुरानी और नई कक्षा दोनों के लिए कोड करना होगा। कोई विकल्प नहीं है। 8 पर तैनाती लक्ष्य सेट करने का प्रयास करें। –

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