2012-08-06 16 views
21

मेरे पास एक लाइब्रेरी है जिसने एक्सकोड 4.4 के तहत कुछ लिंकर चेतावनियां फेंकना शुरू कर दिया है। चेतावनियां "एलडी: चेतावनी: उदाहरण विधि 'विधि के आधार पर हैं:'दबाने की विधि विधि ओवरराइड लिंकर चेतावनी ढांचे xcode

फ्रेमवर्क अभी भी ठीक काम करता है, और मुझे लगता है कि जिस कंपनी ने लिखा है उसे ठीक करने में यह सही होगा अगली रिलीज, लेकिन समय के लिए ये चेतावनियां बहुत परेशान हैं। क्या सभी लिंकर चेतावनियों को अक्षम किए बिना उन्हें बंद करने का कोई तरीका है?

+0

चेतावनी का क्या अर्थ है? – trojanfoe

+0

मुझे लगता है कि इसका मतलब है कि लाइब्रेरी बनाने वाले लोगों ने कुछ चीजों को अनुचित रूप से उपclassed। ऐसा कुछ भी तोड़ने वाला प्रतीत नहीं होता है लेकिन लिंकर इसके बारे में थोड़ा विचित्र है जो परेशान है क्योंकि मैं इसे ठीक नहीं कर सकता क्योंकि यह एक बंद स्रोत है। – ima747

+0

क्या आपने अपनी कक्षा में एक विधि बनाई है/नाम दिया है, जैसा कि दूसरी कक्षा में एक और विधि है? – Hexark

उत्तर

13

दो विकल्प Xc में झंडे "अन्य लिंकर झंडे" जोड़कर मैं के साथ आए हैं कर रहे हैं स्तोत्र का निर्माण सेटिंग्स क्षेत्र:

1) -Xlinker -w जोड़ना सभी लिंकर चेतावनी, कोई फर्क नहीं पड़ता दबाने जाएगा प्रकार (इस ld को -w झंडा है (1))। जाहिर है कि इस विशेष चेतावनी को शांत कर देगा, लेकिन अन्य सभी एलडी चेतावनियां भी।

2) -Xlinker -no_objc_category_merging जोड़ना अनुकूलन चरण छोड़ देगा जहां लिंकर लिंकिंग के दौरान बेस क्लास में सभी श्रेणी विधियों को जोड़ता है, जो इसके बाद रनटाइम पर होता है। स्टार्टअप पर शायद थोड़ा सा धीमा, लेकिन यह अभी भी रनटाइम पर स्विजिंग विधि से तेज होगा, और चूंकि यह इस चरण के दौरान है कि एलडी (1) चेतावनी जारी करता है, यह भी उसे छोड़ देगा।

ऐसा प्रतीत होता है कि एलडी के पास संकलक के तरीके से किसी भी व्यक्तिगत चेतावनी को शल्य चिकित्सा से दबाने का कोई तरीका नहीं है, हालांकि इसमें उनमें से कुछ या समूहों के लिए विशेष झंडे हैं (इनमें से कोई भी इससे मदद नहीं करता है)। उपरोक्त समाधान शायद उत्पादन कोड के लिए अनुशंसित नहीं है, लेकिन कुछ स्थितियों में, एक या दूसरे मदद कर सकते हैं।

+0

से ऊपर बताए गए एक ही प्रोजेक्ट बिल्ड सेटिंग्स में "अन्य चेतावनियां झंडे" के लिए -वोनो-असंगत-गायब-ओवरराइड ध्वज जोड़ सकते हैं। आपने मेरा दिन बचाया – larva

1

कि चेतावनी को छिपाने के लिए एक विकल्प मौजूद है, तो यह के तहत किया जाएगा:

परियोजना नेविगेटर (बाईं ओर फ़ाइल सूची) -> [परियोजना का नाम] (नीला आइकन के साथ एक) -> बिल्ड सेटिंग -> एप्पल LLVM संकलक 3.1 - चेतावनी

इसके अलावा:

In Xcode, how to suppress all warnings in specific source files?

+2

इसके लिए धन्यवाद। संकलक अनुभागों में कोई चेतावनी नहीं है जो पुस्तकालयों या विशिष्ट चेतावनियों के लिए विशिष्ट हैं जिन्हें मैं देख रहा हूं। मैं सभी चेतावनियों को बंद कर सकता हूं लेकिन यह स्पष्ट रूप से मैं बचने की कोशिश कर रहा हूं। अन्य संदर्भित पोस्ट उन फ़ाइलों के लिए भी है जिन्हें संकलित किया जाएगा, लेकिन पुस्तकालय और शीर्षलेख वहां नहीं दिखते हैं, इसलिए विशेष रूप से झंडे सेट करने का कोई तरीका नहीं है। मुझे यह मानना ​​है कि लाइब्रेरी से एक्सकोड में चेतावनी को अक्षम करने का कोई तरीका नहीं है। – ima747

+0

यह बुरी सलाह है। मेरा मानना ​​है कि कई क्लैंग चेतावनियां हैं जिनके पास बिल्ड सेटिंग्स यूआई में चेक बॉक्स नहीं हैं। सामान्य रूप से फ़ाइल पर एक विशिष्ट '-W' विकल्प संकलन के दौरान इस समस्या को ठीक करेगा। फ़ाइल पर '-fdiagnostics-show-option' विकल्प सेट करें और क्लैंग आपको बताएगा कि' -W' किस प्रकार उपयोग करना है। इस विशेष मामले में, यह काम नहीं करेगा, क्योंकि ओपी का सवाल ** लिंकर ** के बारे में है, संकलक नहीं। – paulmelnikow

+0

एक और समाधान, फिर संकलक के लिए और लिंकर नहीं, डायग्नोस्टिक प्रागमा है: http://clang.llvm.org/docs/UsersManual।एचटीएमएल # कंट्रोलिंग-डायग्नोस्टिक्स-थ्रू-प्रागम्स – paulmelnikow

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