2011-08-18 5 views
8

मैं अपने पहले मैक ओएस एक्स ऐप पर काम कर रहा हूं। मेरी परियोजना एक्सकोड डिफ़ॉल्ट के साथ सेट अप की गई थी और मैंने किसी भी बिल्ड सेटिंग्स को छुआ नहीं है। मैक 64-बिट के लिए बिल्ड करते समय, ऐप ठीक चलाता है। हालांकि, जब मैक के लिए निर्माण 32-बिट, मैं एक उचित रूप में मनमाने ढंग से त्रुटि मिलेगा जिसमें बताया गया:32-बिट ओएस एक्स ऐप बनाने में त्रुटि?

Semantic issue: Synthesized property 'myProperty' must either be named the same as a compatible ivar or must explicitly name an ivar.

मैं चीजों को किस तरह के लिए देख सकते हैं?

+3

संपत्ति और आवृत्ति परिवर्तनीय घोषणाओं वाली हेडर फ़ाइल देखें - त्रुटि संदेश एक बहुत अच्छा सटीक एक – Mark

+0

मुझे मूर्खतापूर्ण लगता है। मैंने उन फ़ाइलों को कई बार देखा है, यहां तक ​​कि एक अलग दिन भी। और अब जब आप उन्हें फिर से देखने के लिए कहा तो मैंने एक टाइपो देखा! वाह धन्यवाद। – anna

उत्तर

20

ऐसा लगता है जैसे आपको त्रुटि मिली है, लेकिन मुझे लगता है कि अगर मैं किसी और को बाद में पाता हूं तो मैं आपके प्रश्न का उत्तर दे सकता हूं।

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

तो यदि आपको 32 बिट का समर्थन करने की आवश्यकता है तो सुनिश्चित करें कि आप अपनी सभी संपत्तियों के लिए आवृत्ति चर बनाते हैं। यदि आप केवल 64 बिट का समर्थन करते हैं तो आप अभी भी ऐसा कर सकते हैं ताकि आपका कोड 32 बिट और 64 बिट दोनों के लिए एक ही समय में बनाया जा सके लेकिन आपको यह नहीं करना है।

+7

संश्लेषित गुणों को अभी भी आधुनिक रनटाइम में आवृत्ति चर द्वारा समर्थित किया जाना है; अंतर यह है कि संकलक उन्हें आपके लिए _create_ करेगा, जबकि पुराने 32-बिट संस्करण के लिए संकलन करते समय, इवर को स्पष्ट रूप से घोषित किया जाना चाहिए। –

+0

धन्यवाद दोनों! उस तरह की जानकारी जानना अच्छा है। – anna

+0

उत्तर के लिए धन्यवाद, यह मुझे बचाया :) – banderson623

0

आप 3212 बिल्ड लक्ष्य के लिए NS_BUILD_32_LIKE_64 प्रीप्रोसेसर मैक्रो सेट कर सकते हैं। यह आपको 32 बिट और 64 बिट संस्करणों के लिए अलग कोड बनाए रखने की परेशानी बचाएगा।