Tôi vừa cập nhật dự án để tận dụng ARC với công cụ chuyển đổi tích hợp Xcode 4.2. Thật không may có một lỗi lạ xuất hiện mà tôi không hiểu và không tìm thấy bất cứ điều gì về. Tôi có một lớp tài liệu với một tuyên bố sở hữu:Thuộc tính IBOutlet ARC và yếu
@property (weak) IBOutlet WebView *webView;
Trong tập tin thực hiện Tôi có một tuyên bố @synthesize:
@synthesize webView=_webView;
Khi tôi cố gắng biên dịch nó, nó không thành công và nói với tôi:
error: @synthesize of 'weak' property is only allowed in ARC or GC mode
Tất nhiên dự án được gắn thẻ để biên dịch với ARC. Tôi đánh giá cao sự giúp đỡ nào để hiểu những gì tôi đang làm sai và tại sao.
Chỉnh sửa: Đã trễ ngày hôm qua. Vì vậy, đây là bản ghi biên dịch hoàn chỉnh hơn:
[...] -fobjc-arc -Wno-trigraphs -fpascal-strings -O0 -Wmissing-prototypes -Wreturn-type -Wparentheses -Wswitch -Wno-unused-parameter -Wunused-variable -Wunused-value -Wshorten-64-to-32 -DDEBUG=1 -isysroot /Developer/SDKs/MacOSX10.7.sdk -fasm-blocks -mmacosx-version-min=10.7 -gdwarf-2 -Wno-sign-conversion "-DIBOutlet=attribute((iboutlet))" "-DIBOutletCollection(ClassName)=attribute((iboutletcollection(ClassName)))" "-DIBAction=void)attribute((ibaction)" -iquote [...]/Build/Intermediates/[...].build/Debug/[...].build/[...]-generated-files.hmap -I[...]/Build/Intermediates/[...].build/Debug/[...].build/[...]-own-target-headers.hmap -I[...]/Build/Intermediates/[...].build/Debug/[...].build/[...]-all-target-headers.hmap -iquote [...]/Build/Intermediates/[...].build/Debug/[...].build/[...]-project-headers.hmap -I[...]/Build/Products/Debug/include -I[...]/Build/Intermediates/[...].build/Debug/[...].build/DerivedSources/x86_64 -I[...]/Build/Intermediates/[...].build/Debug/[...].build/DerivedSources -F[...]/Build/Products/Debug -fno-objc-arc [...]
Dường như cài đặt trình biên dịch cho ARC được bật trong đầu và tắt lại sau trong danh sách đối số. Thành thật mà nói: Tôi không biết nơi để loại bỏ các cài đặt kỳ lạ như vậy và làm thế nào nó đến này. Giải pháp duy nhất tôi sẽ đưa ra bây giờ, sẽ là bắt đầu dự án hoàn chỉnh từ một dự án trống và mới và nhập tất cả các tệp lớp từ đầu.
Nếu ai đó biết một cách dễ dàng hơn, tôi sẽ đánh giá cao rất nhiều.
PS: Tôi có tất cả các cài đặt xây dựng liên quan đến ARC được đặt thành CÓ.
Điều gì xảy ra khi bạn xóa (yếu)? – Phlibbo
Kiểm tra kỹ cài đặt bản dựng của bạn. Nhấp vào dự án của bạn trong trình điều hướng tệp, chọn tab "Cài đặt xây dựng" và tìm kiếm "Tính năng tham chiếu tự động". Sau đó, đảm bảo trường cho "Đếm tham chiếu tự động mục tiêu C++" được đặt thành Có. –
@Philibbo: Nếu tôi xóa phần mềm yếu và thay thế bằng chỉ định, mọi thứ sẽ biên dịch. Có đúng không, khi tôi cho rằng tệp này dường như bị loại trừ khỏi ARC bằng cách nào đó? – Jacque