2012-03-27 13 views
6

मैंने देखा कि एक्सकोड (या अधिक सटीक ऐप्पल एलएलवीएम कंपाइलर?) को अब आगे की विधि घोषणाओं की आवश्यकता नहीं है। दूसरे शब्दों में, निम्न कोड चेतावनी के बिना बनाता है:चूंकि एक्सकोड को अब आगे की विधि घोषणाओं की आवश्यकता क्यों होती है और क्यों?

@implementation Foo 

-(void) foo { 
    [self bar]; 
} 

-(void) bar {} 

@end 

यह -foo में एक चेतावनी कह रही है कि Foo-bar करने, सही जवाब नहीं हो सकता है फेंक करने के लिए इस्तेमाल? क्या कंपाइलर अब स्मार्ट है या यह कुछ और है? मैं एक्सकोड 4.3.1 प्लस ऐप्पल एलएलवीएम कंपाइलर 3.1 का उपयोग कर रहा हूं।

+0

क्या आप वाकई '@interface Foo' की शीर्षलेख फ़ाइल से 'बार' घोषणा शामिल नहीं कर चुके हैं? – hamstergene

+0

वास्तव में बहुत यकीन है। – zoul

उत्तर

0

मेरे एक्सकोड 4.2 में, चेतावनी अभी भी वहां है, इसके अलावा, जब एआरसी सक्षम है, तो यह केवल एक चेतावनी नहीं है, यह एक त्रुटि है।

+0

यदि आप एक ही फ़ाइल में विधि को कॉल और कार्यान्वित नहीं करते हैं। अगर वह किसी अन्य फ़ाइल से [foo bar] करता, तो यह त्रुटि होगी, लेकिन यह ऊपर की स्थिति में ठीक लगता है। – jrturton

+0

@jrturton मैंने इसे उसी फ़ाइल में नीचे लागू किया है और यह अभी भी एक त्रुटि है। – hamstergene

+2

4.3 में कोशिश करें? मैंने यह भी देखा है, मुझे लगता है कि यह एक कंपाइलर सुविधा है – jrturton

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