2010-12-06 12 views
11

बिना शर्त के रूप में एक काम का परिणाम का उपयोग करते हुए मैं एक कस्टम UIActionSheet वर्गकोष्ठकों

if (otherButtonTitles != nil) { 
    [self addButtonWithTitle:otherButtonTitles]; 
    va_list args; 
    va_start(args, otherButtonTitles); 
    NSString * title = nil; 
    while(title = va_arg(args,NSString*)) { // error here 
     [self addButtonWithTitle:title]; 
    } 
    va_end(args); 
} 

मैं यह त्रुटि

है अंदर यह है! कोष्ठक

इस लाइन

while(title = va_arg(args,NSString*)) { 

यही कारण है कि है की ओर इशारा करते के बिना एक शर्त के रूप एक काम का परिणाम का उपयोग कर?

धन्यवाद।

उत्तर

18

में पारित हो जाएगा यह शायद नहीं है एक त्रुटि जैसा कि आपने कहा था, यह चेतावनी है।

कंपाइलर आपको चेतावनी दे रहा है कि आपको ओल 'असाइनमेंट-जब-आप-माध्य-तुलना गलती से बचने के लिए एक सशर्त के भीतर कोष्ठक के भीतर असाइनमेंट करना चाहिए।

अतीत इस बल्कि पंडिताऊ संकलक चेतावनी प्राप्त करने के लिए, तो आप बस कोष्ठकों का एक और जोड़ी के भीतर काम घेर कर सकते हैं:

while((title = va_arg(args,NSString*))) { 
//... 
} 
+0

धन्यवाद !!! इसने समस्या हल की। सबसे अजीब हिस्सा यह है कि केवल एलएलवीएम इसके बारे में पसंद है। जीसीसी इसे चेतावनी के बिना संकलित करता है। मैं जीसीसी के बजाय संकलन के लिए एलएलवीएम का उपयोग करना शुरू कर रहा हूं और मुझे यहां कुछ और पिकिंग त्रुटियां मिल रही हैं ... – SpaceDog

+0

@ डिजिटल रोबोट: मुझे कहीं और पढ़ना याद है जो विशेष रूप से एलएलवीएम के लिए जांच करता है। मुझे लगता है कि कभी-कभी इन चीजों के बारे में पसंद करना अच्छा होता है :) – BoltClock

+0

हाँ मैं सहमत हूं। : डी – SpaceDog

7

यह एक चेतावनी होनी चाहिए और कोई त्रुटि नहीं होनी चाहिए। यदि आप = का उपयोग कर रहे हैं तो यह चेतावनी देने का प्रयास कर रहा है लेकिन आपका मतलब == था।

इस मामले में, आप क्योंकि आप otherButtonTitles के माध्यम से पुनरावृति करने के लिए va_arg() कई बार कॉल कर रहे हैं और अस्थायी वर title को यह बताए == उपयोग करने के लिए अर्थ नहीं कर रहे हैं, तो बस कोष्ठकों का एक और सेट जोड़ें। चेतावनी दूर चली जाएगी।

while((title = va_arg(args,NSString*))) { 
1

संकलक सोचता है कि आप गलती से असाइनमेंट कर रहे हैं, इसलिए इस त्रुटि का सुझाव देते हैं। आप इस तरह कोष्ठक का एक और जोड़ी में अपने बयान लपेट चाहिए:

while((title = va_arg(args,NSString*))) 

तो पहले संकलक काम का मूल्यांकन करेंगे, तो वह काम का परिणाम while हालत

1

यह थोड़ा picky प्रतीत होता है, लेकिन आप की कोशिश की है:

while((title = va_arg(args,NSString*)) != NULL) 

?

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