9

मैं एक परेशान चेतावनी से छुटकारा पाने की कोशिश कर रहा हूं कि CLANG/LLVM 3.0 मुझे दे रहा है। मैं निम्नलिखित इवर मेरी वस्तु में स्थापित किया है:संपत्ति को डिफ़ॉल्ट रूप से परमाणु माना जाता है

bool preloaded; 

और निम्नलिखित संपत्ति घोषणा:

@property(readonly) bool preloaded; 

और निम्नलिखित synthesize कॉल:

@synthesize preloaded; 

यह खड़ा के रूप में, संकलक की शिकायत :

Property is assumed atomic by default

मैं जोड़ने के लिए "परमाणु" संपत्ति घोषणा को बदलते हैं:

@property(atomic,readonly) bool preloaded; 

यह भी है कि के बारे में शिकायत:

error: expected a property attribute before 'atomic'

तो ऐसा लगता है कि अगर मैं कर रहा शापित कर रहा हूँ और अगर मैं डॉन 'शापित टी ... क्या मुझे कुछ याद आ रही है?

+0

ठीक है, 'atomic' एक मान्य विशेषता शब्द नहीं है, तो यह दूसरा बिट एक त्रुटि का कारण बनता है कि समझ में आता है। हालांकि, पहले के बारे में डुनो। –

+0

हां, मैंने यही पाया, लेकिन यह देखते हुए कि कैसे एक्सकोड सिंटैक्स "परमाणु" पर प्रकाश डाला गया है, मुझे लगा कि शायद वे इसे वैध विशेषता कीवर्ड के रूप में जोड़ देंगे। – Karl

+0

मैंने '@property (परमाणु, readonly) बूल preloaded कोशिश की; 'और यह ठीक संकलित करता है। यह भी चेतावनी को हटा देता है। मैं एक्सकोड 4.2.1 का उपयोग कर रहा हूँ। –

उत्तर

9

ऐसा लगता है कि आपके पास लागू परमाणु उद्देश्य-सी गुण आपकी परियोजना सेटिंग्स में एलएलवीएम कंपाइलर चेतावनी सक्षम है। इसे बंद करने से चेतावनी को हटा दिया जाएगा।

जैसा ऊपर बताया गया है, atomic मान्य कीवर्ड नहीं है, और केवल nonatomic की अनुपस्थिति से निहित है। से एप्पल के Declared Properties documentation:

You can use this attribute to specify that accessor methods are not atomic. (There is no keyword to denote atomic.)

+0

मैं इसे "सही" के रूप में चिह्नित करूंगा क्योंकि सेटिंग को चेतावनी से छुटकारा मिल रहा है, लेकिन मैं अभी भी परेशान हूं कि उन गुणों को शुरू करने के लिए क्यों फ़्लैग किया गया था। क्या यह एलएलवीएम में एक बग है? अगर मैं सभी चेतावनियों को सक्षम कर सकता हूं तो मैं बहुत खुश रहूंगा ... – Karl

+2

चेतावनी कंपाइलर को संतुष्ट करने के सिर्फ एक गेम से अधिक हैं, वे प्रोग्रामर के दौरान कुछ व्यवहारों के बारे में जागरूक होने के लिए डेवलपर को अनुस्मारक के रूप में कार्य करते हैं। चेतावनी सक्षम रखने के लिए, लेकिन इस उदाहरण को अक्षम करें, क्लैंग दस्तावेज़ में [स्टेटिक विश्लेषक डायग्नोस्टिक्स नियंत्रित करना] (http://clang.llvm.org/docs/UsersManual.html#diagnostics) देखें। – jnic

+0

बहुत बढ़िया! उसने जादू की तरह काम किया! अब मैं पैडेंटिक को छोड़कर सभी चेतावनियों के साथ संकलित कर सकता हूं (लॉगिंग के लिए ## __ VA_ARGS__ के उपयोग के कारण) – Karl

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