2009-06-24 17 views
28

फ़ाइल ViewController.m अंदर मेरे वर्तमान परियोजना में, मैं विधि चला रहा हूँ:परास्त "कई नामित तरीकों 'XXX' मिला" त्रुटि

warning: multiple methods named 'writeData:' found 
:

[[connection writer] writeData: data]; 

यह चेतावनी देता है

मैं विधि कॉल करने का प्रयास कर रहा हूँ:

- (void) writeData: (NSData*)data 

... TCPWriter.m में। दुर्भाग्य से, वहाँ दो अन्य writeData तरीकों

- (void)writeData:(NSData *)data; 

... NSFileHandle.h में और ...

- (BOOL)writeData:(NSData *)data 

... NSURLHandle.h में हैं। यह विशेष रूप से मुझे भ्रमित कर रहा है क्योंकि [conn writer] को TCPWriter कक्षा वापस करनी चाहिए और उस वर्ग को सही writeData विधि को कॉल करना चाहिए। इसके अलावा, मुझे यह भी पूरी तरह से यकीन नहीं है कि NSFileHandle.h और NSURLHandle.h को परियोजना के एक अलग हिस्से की बजाय ViewController.h में शामिल किसी भी पुस्तकालय में भी शामिल किया गया है।

मैं संकलक कैसे दिखा सकता हूं जो writeData विधि जिसे मैं कॉल करना चाहता हूं और यह त्रुटि क्यों होती है?

उत्तर

53

सुनिश्चित करें कि [कनेक्शन लेखक] वास्तव में एक टीसीपीवाइटर * लौट रहा है। यदि यह एक आईडी लौटा रहा है, तो संकलक नहीं जानता कि कौन सा लेखन उपयोग करना है। साथ ही, सुनिश्चित करें कि आप TCPWriter.h फ़ाइल आयात कर रहे हैं - यदि कंपाइलर हेडर फ़ाइलों को नहीं देखता है, तो यह आईडी लौटने के लिए डिफ़ॉल्ट होगा, जो आपको एक ही समस्या पर वापस लाएगा।

TCPWriter* writer = [connection writer]; 
[writer writeData: data]; 

या

[(TCPWriter*)[connection writer] writeData: data]; 
+1

मुझे एहसास नहीं हुआ कि फ़ाइल को स्पष्ट रूप से आयात नहीं किया गया था जब यह एक आईडी वापस करने के लिए डिफ़ॉल्ट था। धन्यवाद! – Holtorf

+2

चेतावनियां चालू करें और आपको आश्चर्य नहीं करना पड़ेगा। अन्य लिंकर झंडे: -वॉल, और कई अन्य लोगों को चालू करें, जिनमें उपचार चेतावनियां त्रुटियों के रूप में शामिल हैं। –

4

शानदार जवाब ऊपर करने के लिए एक विकल्प के रूप का प्रयास करें, तो आप चेतावनी का भी छुटकारा पाने के लिए है, इसलिए की तरह सही प्रकार के लिए वस्तु डाली कर सकते हैं:

[(NSView*)textView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)]; // for horizontal scrolling 
संबंधित मुद्दे