2012-01-16 50 views
5

Tôi có ứng dụng đang chạy và thử nghiệm trên 10.7 nhưng sau đó nhận ra rằng tôi cần nó để hoạt động trên các phiên bản cũ hơn. Và thật không may, tôi bắt đầu dự án này với ARC ngay từ đầu.Lỗi ARC khi triển khai đến 10.6

Bây giờ, thiết lập bản dựng của tôi là gỡ lỗi cơ sở sdk: 10.7 và phát hành SDK cơ sở: 10.6. Và khi tôi cố lưu trữ ứng dụng của mình, tôi nhận được lỗi sau:

Undefined symbols for architecture x86_64: 
"_objc_retain", referenced from: 
    +[__ARCLite__ load] in libarclite_macosx.a(arclite.o) 
    -[AppDelegate applicationDidFinishLaunching:] in AppDelegate.o 
    -[AppDelegate managedObjectModel] in AppDelegate.o 
    -[AppDelegate persistentStoreCoordinator] in AppDelegate.o 
    -[AppDelegate managedObjectContext] in AppDelegate.o 
    -[AppDelegate windowWillReturnUndoManager:] in AppDelegate.o 
    -[AppDelegate saveAction:] in AppDelegate.o 
    ... 
(maybe you meant: _objc_retainedObject) 
"_objc_release", referenced from: 
    -[AppDelegate applicationDidFinishLaunching:] in AppDelegate.o 
    -[AppDelegate applicationFilesDirectory] in AppDelegate.o 
    -[AppDelegate managedObjectModel] in AppDelegate.o 
    -[AppDelegate persistentStoreCoordinator] in AppDelegate.o 
    -[AppDelegate managedObjectContext] in AppDelegate.o 
    -[AppDelegate windowWillReturnUndoManager:] in AppDelegate.o 
    -[AppDelegate saveAction:] in AppDelegate.o 
    ... 
"_objc_retainAutoreleasedReturnValue", referenced from: 
    -[AppDelegate applicationFilesDirectory] in AppDelegate.o 
    -[AppDelegate managedObjectModel] in AppDelegate.o 
    -[AppDelegate persistentStoreCoordinator] in AppDelegate.o 
    -[AppDelegate managedObjectContext] in AppDelegate.o 
    -[AppDelegate windowWillReturnUndoManager:] in AppDelegate.o 
    -[AppDelegate saveAction:] in AppDelegate.o 
    -[AppDelegate applicationShouldTerminate:] in AppDelegate.o 
    ... 
"_objc_autoreleaseReturnValue", referenced from: 
    -[AppDelegate applicationFilesDirectory] in AppDelegate.o 
    -[AppDelegate managedObjectModel] in AppDelegate.o 
    -[AppDelegate persistentStoreCoordinator] in AppDelegate.o 
    -[AppDelegate managedObjectContext] in AppDelegate.o 
    -[AppDelegate windowWillReturnUndoManager:] in AppDelegate.o 
    -[MainWindowController viewForTag:] in MainWindowController.o 
    -[MainWindowController tableView:objectValueForTableColumn:row:] in MainWindowController.o 
    ... 
"_objc_storeStrong", referenced from: 
    -[AppDelegate persistentStoreCoordinator] in AppDelegate.o 
    -[AppDelegate saveAction:] in AppDelegate.o 
    -[AppDelegate applicationShouldTerminate:] in AppDelegate.o 
    -[AppDelegate .cxx_destruct] in AppDelegate.o 
    -[MainWindowController init] in MainWindowController.o 
    -[MainWindowController viewForTag:] in MainWindowController.o 
    -[MainWindowController showUserFinderView:] in MainWindowController.o 
    ... 
"_objc_retainAutoreleaseReturnValue", referenced from: 
    +[MainWindowController sharedInstance] in MainWindowController.o 
    -[FileMetaData getFileName] in FileMetaData.o 
    -[FileMetaData getLastHash] in FileMetaData.o 
    -[FileMetaData getCreationDate] in FileMetaData.o 
    -[FileMetaData getLastModified] in FileMetaData.oe 
    -[FileMetaData getLocalPath] in FileMetaData.o 
    ... 
"_objc_autorelease", referenced from: 
    -[SBJsonParser objectWithString:error:] in SBJsonParser.o 
    -[SBJsonTokeniser getStringToken:] in SBJsonTokeniser.o 
    -[SBJsonTokeniser getNumberToken:] in SBJsonTokeniser.o 
    -[SBJsonUTF8Stream getRetainedStringFragment:] in SBJsonUTF8Stream.o 
    -[SBJsonWriter stringWithObject:error:] in SBJsonWriter.o 
"_objc_retainAutorelease", referenced from: 
    -[SBJsonTokeniser getStringToken:] in SBJsonTokeniser.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Có vẻ như vấn đề với ARC, nhưng tôi không biết phải bắt đầu khắc phục vấn đề này ở đâu. Bất kỳ đề xuất? Cảm ơn.

Trả lời

10

Bạn cần đặt SDK thành 10.7 - nhưng bạn có thể đặt mục tiêu Triển khai thành 10.6. Có một số cảnh báo mặc dù được nêu chi tiết trong câu hỏi này: How to deploy to Snow Leopard with ARC enabled

+0

Cảm ơn. Tôi thực sự đọc chủ đề đó, nhưng đã nhầm lẫn với mục tiêu triển khai và phát hành sdk. Bây giờ nó ổn. Cảm ơn. –

+0

Nói chung, bạn nên tránh có các phiên bản SDK khác nhau để gỡ lỗi/phát hành, vì các khung công tác kiểm tra xem bạn đã liên kết và đôi khi hành xử khác với khả năng tương thích –

3

Tôi đã xem qua câu hỏi này khi tôi nhấn cùng một thông điệp hôm nay. Tôi đã đặt SDK thành 10.7 và mục tiêu triển khai được đặt thành 10.6, nhưng vẫn thấy thông báo này.

Dự án của tôi chủ yếu sử dụng mã số phát hành thủ công hiện có –, chỉ với một vài tệp mới sử dụng ARC. Theo đó, tôi đã vô hiệu hóa ARC trong cài đặt đích chính và đã bật tính năng này cho hai tệp bằng cách thêm -fobjc-arc vào cài đặt xây dựng cho mỗi tệp (trong Giai đoạn xây dựng). Trên một linh cảm, tôi đã bật ARC trong mục tiêu và sau đó thả các cài đặt cho mỗi tệp (xóa cờ cho hai tệp và thêm -fno-objc-arc vào tất cả các tệp khác) và không còn gặp lỗi liên kết động trên 10.6 nữa. .

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