2011-12-05 25 views
12

नोट: यह प्रश्न है जिसके लिए मुझे पहले से ही एक उत्तर मिला है। ऐसा लगता है कि एक दिलचस्प उत्तर is encouraged खोजने के बाद एक प्रश्न पोस्ट करना, इसलिए मैं इसे पोस्ट कर रहा हूं। किसी और को एक ही समस्या होने की संभावना है और यह उपयोगी लगता है।आईफोन 3 जी पर सभी गलत समन्वयित करता है? यह आपका कंपाइलर


मुझे लगता है कि चार्ट का उत्पादन किसी iOS एप्लिकेशन है। कुछ ही समय एक अद्यतन प्रकाशित करने के बाद, एक उपयोगकर्ता मुझे इस आतंकित ईमेल भेजा:

"नवीनतम अद्यतन घटता में संशोधन किया है ... और विकास घटता नहीं देखा और के रूप में एक लाइन उतरते डाला डेटा प्रतिनिधित्व कर रहे हैं ... इससे पहले कि आप देख सकते हैं पूरी तरह से अच्छी तरह से

सहायता मुझे "

मैं उसे स्क्रीनशॉट भेजें और अधिक विस्तार देने के लिए। उसके पास एक आईफोन 3 जी है और इस तरह लड़की का चार्ट दिखता है। अधिकांश बिंदु गलत निर्देशांक पर खींचे जाते हैं: वे (x, y) के बजाय (x, x) पर खींचे जाते हैं।

Screenshot of the buggy display

यह कैसे देखने के लिए माना जाता है के साथ तुलना करें (रंग में अंतर पर ध्यान न दें - गुलाबी, नीले लड़कों के लिए लड़कियों के लिए है):

Screenshot of a correct display

ज्यादा प्रयोग के बाद, मैं भेज उन्हें पिछले संस्करण का एक पुनर्निर्मित संस्करण (जो उसके लिए ठीक काम करता था) और यह अभी भी काम नहीं करता है। तो अंत में ऐसा लगता है कि अद्यतन में कोड में परिवर्तन के साथ इसका कोई लेना-देना नहीं है। स्पष्टीकरण क्या हो सकता है?

+1

हो सकता है कि वह इसे इस पल में लिख रही:

यहाँ अगर यह किसी को भी मदद करता है, जहां इस संकलक विकल्प जोड़ने के लिए दिखाने वाले स्क्रीनशॉट है। – sidyll

उत्तर

10

आईफोन मूल और आईफोन 3 जी armv6 आर्किटेक्चर का उपयोग करते हैं, बाद में मॉडल armv7। this Stack Overflow question का उत्तर, और an Apple developer forum thread XCode 4.2 के कंपाइलर द्वारा उत्पादित armv6 थंब कोड में एक समस्या को इंगित करता है जो विशेष रूप से गलत परिणामों को वापस करने के लिए विशेष रूप से CGPoint में कुछ डेटा संरचनाओं पर अंकगणितीय संचालन का कारण बनता है। जैसे एक्स मान वाई मान में लिखा जा रहा है।

समाधान XCode प्रोजेक्ट में -mno-thumb कंपाइलर विकल्प जोड़ने का है। यह संकलक को थंब मोड मोड को उत्सर्जित नहीं करने के लिए कहता है, जिससे बग को बाईपास किया जाता है। एक और समाधान पहले एक्सकोड (प्री-आईओएस 5 एसडीके) पर वापस स्विच करना है, जिसमें यह बग नहीं है।

तो बग कंपाइलर में है! कितना मजेदार था वो? :) विकास के दो दशकों में, मुझे अभी तक ऐसी चीज में आने वाला नहीं था।

enter image description here

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

  • कोई संबंधित समस्या नहीं^_^