2011-12-05 27 views
12

Lưu ý: Đây là câu hỏi mà tôi đã tìm thấy câu trả lời. Dường như đăng câu hỏi sau khi tìm câu trả lời thú vị is encouraged, vì vậy tôi đăng bài này. Một người khác có khả năng có cùng một vấn đề và thấy điều này hữu ích.Tọa độ tất cả sai trên iPhone 3G? Nó có thể là trình biên dịch của bạn


Tôi có ứng dụng iOS tạo biểu đồ. Không lâu sau khi xuất bản một bản cập nhật, người dùng đã gửi cho tôi email hoảng sợ này:

"cập nhật mới nhất đã sửa đổi các đường cong ... không thấy tăng trưởng hơn đường cong và dữ liệu chèn được biểu diễn dưới dạng một dòng giảm dần ... trước khi bạn có thể nhìn thấy rất rõ

Help me"

tôi nhận được anh ta gửi một ảnh chụp màn hình và đưa ra chi tiết hơn. Anh ấy có iPhone 3G và đây là biểu đồ của cô gái. Hầu hết các điểm được vẽ theo tọa độ sai: chúng xuất hiện để được vẽ tại (x, x) thay vì (x, y).

Screenshot of the buggy display

Hãy so sánh với cách này là vụ phải giống (bỏ qua sự khác biệt về màu sắc - màu hồng là cho các bé gái, màu xanh cho bé trai):

Screenshot of a correct display

Sau nhiều thử nghiệm, tôi gửi anh ta một phiên bản xây dựng lại của phiên bản trước (mà làm việc OK cho anh ta) và nó vẫn không hoạt động. Vì vậy, cuối cùng nó xuất hiện rằng các thay đổi mã trong bản cập nhật không có gì để làm với nó. Điều gì có thể là lời giải thích?

+1

Có lẽ ông đang viết nó vào lúc này. – sidyll

Trả lời

10

iPhone gốc và iPhone 3G sử dụng kiến ​​trúc armv6, các mẫu sau là armv7. Câu trả lời cho this Stack Overflow questionan Apple developer forum thread trỏ đến sự cố trong armv6 Mã ngón tay được tạo bởi trình biên dịch XCode 4.2 gây ra phép tính số học trên các cấu trúc dữ liệu nhất định, cụ thể là CGPoint, để trả lại kết quả sai hoàn toàn. Chẳng hạn như giá trị x được ghi vào giá trị y.

Giải pháp là thêm tùy chọn biên dịch -mno-thumb vào dự án XCode. Điều này cho trình biên dịch không phát ra mã chế độ Thumb, do đó bỏ qua lỗi. Một giải pháp khác là chuyển về XCode trước đó (SDK trước iOS5), không có lỗi này.

Vì vậy, lỗi nằm trong trình biên dịch ! Làm thế nào là mát mẻ? :) Trong hai thập kỷ phát triển, tôi chưa từng gặp một điều như vậy.

Dưới đây là một bức ảnh chụp ở đâu để thêm tùy chọn trình biên dịch này nếu nó giúp mọi người:

enter image description here