2012-02-03 12 views
5

मैंने बूलियन इनपुट var के साथ एक फ़ंक्शन घोषित किया। मुझे कोई त्रुटि नहीं है। हालांकि, इसे किसी अन्य नियंत्रक से कॉल करते समय, अधिसूचना प्रकट होती है: "प्रकार BOOL के पैरामीटर के लिए पॉइंटर रूपांतरण भेजने 'BOOL' के लिए असंगत पूर्णांक"। मैं क्या गलत कर रहा हूं? धन्यवाद।आईओएस बूलियन var घोषणा

- (void)composeBar: (BOOL *)savePars 
अन्य दृश्य से

:

AppDelegate *localFunction = [[UIApplication sharedApplication] delegate]; 

[localFunction composeBar:YES]; 

उत्तर

9

BOOL* कोई बूलियन नहीं है। यह एक बूलियन के लिए एक सूचक है। बस

- (void)composeBar:(BOOL)savePars 

का उपयोग आप क्योंकि सभी Obj सी वस्तुओं * साथ घोषित किया गया है की संभावना असमंजस में हैं, लेकिन वह क्योंकि वे वास्तव में संकेत कर रहे हैं है। हालांकि, BOOL कोई ऑब्जेक्ट नहीं है, यह वास्तव में केवल char है जिसमें 0 या 1 है। जैसे ही आप int* (या अधिक idiomatic कोड, NSInteger) के बजाय एक पूर्णांक के लिए उपयोग करेंगे, तो आप BOOL* के बजाय BOOL का उपयोग करें।

4

ऐसा इसलिए है क्योंकि आपने बूलियन को बूलियन नहीं होने के कारण पॉइंटर लेने के रूप में कार्य घोषित किया था। यह कैसे घोषणा दिखना चाहिए है:

- (void)composeBar: (BOOL)savePars 

* के साथ जुडा हुआ आईडी प्रकार (अर्थात जिन्हें आप @interface/@implementation के माध्यम से परिभाषित)। नियमित सी प्रकार, enums, structs, आदि को घोषणा में * की आवश्यकता नहीं है, जब तक कि आप वास्तव में एक सूचक पास नहीं करना चाहते हैं।

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