2011-08-18 39 views
8

Tôi đang làm việc trên ứng dụng Mac OS X đầu tiên của mình. Dự án của tôi đã được thiết lập mặc định XCode và tôi chưa chạm vào bất kỳ Cài đặt Xây dựng nào. Khi xây dựng cho Mac 64 bit, ứng dụng chạy tốt. Tuy nhiên, khi xây dựng cho Mac 32-bit, tôi nhận được một lỗi dường như tùy ý nói rằng:Lỗi khi xây dựng ứng dụng OS X 32 bit?

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

tôi có thể kiểm tra Những loại điều gì?

+3

Cho phép xem tệp tiêu đề chứa thuộc tính và khai báo biến mẫu - thông báo lỗi là chính xác rất tốt – Mark

+0

Bây giờ tôi cảm thấy ngớ ngẩn. Tôi đã xem qua các tệp đó nhiều lần, ngay cả vào một ngày khác. Và bây giờ bạn đã yêu cầu nhìn lại chúng một lần nữa, tôi đã phát hiện lỗi đánh máy! Ồ cảm ơn nhé. – anna

Trả lời

20

Có vẻ như bạn đã tìm thấy lỗi nhưng tôi nghĩ tôi có thể trả lời câu hỏi của bạn chỉ trong trường hợp người khác tìm thấy nó sau này.

Apple đã thực hiện rất nhiều thay đổi trong thời gian chạy Objective-C 64 bit mà họ không thể làm trước đó vì nó sẽ phá vỡ khả năng tương thích nhị phân. Một trong những điều khác biệt là trong các thuộc tính tổng hợp thời gian chạy 32 bit phải được hỗ trợ bởi các biến mẫu. Trên các thuộc tính tổng hợp thời gian chạy 64-bit sill cần nhưng chúng được tạo tự động cho bạn. Theo mặc định, tên của biến cá thể phải giống như tên của thuộc tính.

Vì vậy, trong trường hợp bạn cần hỗ trợ 32 bit thì hãy đảm bảo rằng bạn tạo biến mẫu cho tất cả các thuộc tính của bạn. Nếu bạn chỉ hỗ trợ 64 bit thì bạn vẫn có thể làm điều đó để mã của bạn có thể được xây dựng cho cả 32 bit và 64 bit cùng một lúc nhưng bạn không phải làm như vậy.

+7

Các thuộc tính tổng hợp vẫn phải được hỗ trợ bởi các biến mẫu trong thời gian chạy hiện đại; sự khác biệt là trình biên dịch sẽ _create_ chúng cho bạn, trong khi khi biên dịch cho phiên bản 32 bit cũ hơn, các mã vạch phải được khai báo một cách rõ ràng. –

+0

Cảm ơn cả hai! Thật tốt khi biết loại thông tin đó. – anna

+0

Cảm ơn bạn đã trả lời, điều này đã cứu tôi :) – banderson623

0

Bạn có thể đặt NS_BUILD_32_LIKE_64 macro tiền xử lý trong Xcode cho mục tiêu xây dựng 32 bit. Điều này sẽ giúp bạn tiết kiệm những rắc rối của việc duy trì mã riêng cho phiên bản 32bit và 64bit.

Các vấn đề liên quan