I में की श्रेणी उदाहरण विधि को ओवरराइड करते समय आप लिंकर चेतावनी को कैसे दबाते हैं। मुझे यह करने के खतरों से भी अवगत है (यह एक और कक्षा के अंदर एक निजी वर्ग है और कोई भी कभी भी एक और ओवरराइडिंग श्रेणी विधि नहीं लिखता है, इसलिए कोई अपरिभाषित व्यवहार गारंटी नहीं है)। मैं इसी तरह की questions का एक बहुत देखा है लेकिन वे सभी पते दबा संकलक चेतावनी कुछ इस तरह का उपयोग कर:किसी श्रेणी का उपयोग करके किसी विधि को ओवरराइड करने के लिए
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-protocol-method-implementation"
// do your override
#pragma clang diagnostic pop
हालांकि यह अभी भी लिंकर चेतावनी छोड़ देता है। Xcode 4.6 में, मुझे अपने विशेष ओवरराइड के लिए इसे से छुटकारा पाना संभव है, जिसे मैं सुरक्षित मानता हूं?
यहां समस्या का वर्णन करने के लिए sample GitHub project है।
यदि आप exlain करेंगे, तो आपको इसकी आवश्यकता क्यों है, हम शायद आपको वैकल्पिक समाधान प्रदान कर सकते हैं। आपका उदाहरण कोड हमें कारण नहीं दिखाता है, क्योंकि यह इस उदाहरण में स्पष्ट नहीं है, आप उपclassing का उपयोग क्यों नहीं करते हैं। – vikingosegundo
@vikingosegundo मैं अभी भी अपने सुपरक्लास तक पहुंच बनाए रखने के दौरान एक विधि कार्यान्वयन को प्रतिस्थापित करना चाहता हूं (और यह विधि स्विजलिंग से अधिक सुंदर दृष्टिकोण ढूंढें)। अधिक जानकारी के लिए यह प्रश्न देखें: http://stackoverflow.com/questions/15291390/in-objective-c-how-do-you-entirely-replace-a-method-of-a-parent-class-while-pre उस प्रश्न में मैंने समस्या के वैकल्पिक समाधान के लिए कहा है। यहां मैं सिर्फ भविष्य के संदर्भ के लिए वास्तविक लिंकर चेतावनियों को दबाने के लिए कह रहा हूं। – lms
मैं कभी भी एक चेतावनी को दबाकर दबाने पर विचार नहीं करूंगा। हो सकता है कि यह विधि swizzling से कम बदसूरत है ... – vikingosegundo