2012-01-24 6 views
26

मैं इस चेतावनी जब मैं दो UIColorsचेतावनी:

ज फ़ाइल में की आरजीबी घटक तुलना करने के लिए कोशिश कर रहा हूँ हो रही है "समारोह का अंतर्निहित घोषणा '...' C99 में अमान्य है", मैं इस घोषित

-(int) ColorDiff:(UIColor *) color1 :(UIColor *)color2; 

मीटर फ़ाइल में

- (int) ColorDiff:(UIColor *) color1 :(UIColor *)color2{ 
    ... //get RGB components from color1& color2 
    // compute differences of red, green, and blue values 
    CGFloat red = red1 - red2; 
    CGFloat green = green1 - green2; 
    CGFloat blue = blue1 - blue2; 

    // return sum of squared differences 
    return (abs(red) + abs(green) + abs(blue)); 
    } 

और फिर एक ही मीटर फ़ाइल में, मैं 2 UIColors इस

तरह की तुलना 210

मैंने शोध किया और लोगों का कहना है कि मुझे हेडर फ़ाइल शामिल करनी होगी। मैंने ऐसा किया लेकिन मेरे मामले में मदद नहीं की। मुझे यह त्रुटि क्यों मिल रही है?

उत्तर

22

ऐसा इसलिए है क्योंकि आपने अपने फ़ंक्शन को एक उदाहरण विधि के रूप में परिभाषित किया है, फ़ंक्शन नहीं। दो समाधान हैं।

int ColorDiff(UIColor *color1, UIColor *color2) { 
    // colorDiff's implementation 
} 

या, आप यह करने के लिए अपने कॉल बदल सकते हैं::

जिनमें से एक यह इस करने के लिए अपने विधि घोषणा बदलने के लिए है

int d = [self ColorDiff:C1:C2]; 
+0

आपको बहुत बहुत धन्यवाद। मैं वास्तव में ऐसा नहीं था। – JHHoang

3

अपने ज फ़ाइल में घोषणा नहीं करता है ' अपने .m फ़ाइल में अपने कार्यान्वयन से मेल नहीं खाते।

अपने मीटर में अपने विधि के क्रियान्वयन इस तरह दिखता है:

- (int) ColorDiffBetweenColorOne:(UIColor *) color1 AndColorTwo:(UIColor *)color2 
{ 
    ... //get RGB components from color1& color2 
    // compute differences of red, green, and blue values 
    CGFloat red = red1 - red2; 
    CGFloat green = green1 - green2; 
    CGFloat blue = blue1 - blue2; 

    // return sum of squared differences 
    return (abs(red) + abs(green) + abs(blue)); 
} 

से आप इसे इस प्रकार ज में घोषित करना चाहिए:

- (int) ColorDiffBetweenColorOne:(UIColor *) color1 AndColorTwo:(UIColor *)color2; 

और यह है कि एक ही से कॉल करने के लिए .m फ़ाइल, उपयोग करें:

int d = [self ColorDiffBetweenColorOne:C1 AndColorTwo:C2]; 
+0

धन्यवाद आपका महान जवाब। वह एक टाइपो था। जैसा कि रिचर्ड ने ऊपर बताया है, मैंने अभी बदल दिया [स्वयं रंगीन: सी 1: सी 2]; – JHHoang

+0

@JHHoang यह निश्चित रूप से भी समस्या को हल करेगा। लेकिन आप अभी भी कुछ और उपयोगकर्ता के अनुकूल तरीके से अपनी विधि का नाम बदलने पर विचार कर सकते हैं। कीवर्ड के बिना आपके दो तर्कों को अलग करने के लिए आपकी विधि स्पष्ट नहीं है। दस्तावेज़ीकरण देखें: (http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CodingGuidelines/Articles/NamingMethods.html#//apple_ref/doc/uid/20001282-BCIGIJJF) – AtkinsonCM

+0

के लिए धन्यवाद आपकी टिप्पणी। वह मेरा पहला मसौदा था। मैं हमेशा सेंट की कोशिश कर रहा हूं और यह सुनिश्चित करता हूं कि इससे पहले कि मैं इसे अधिक उपयोगकर्ता के अनुकूल बना दूं। मुझे पता है कि यह बुरा है। एक बार फिर धन्यवाद – JHHoang

1

एच.फाइल में एक प्रोटोटाइप गायब है!