내 응용 프로그램을 실행하고 10.7에서 테스트했지만 나중에 이전 버전에서도 작동해야한다는 것을 깨달았습니다. 불행하게도 저는 ARC를 시작하면서이 프로젝트를 시작했습니다.10.6에 배포 할 때 ARC 오류가 발생했습니다.
내 빌드 설정은 디버그 기반 sdk : 10.7이며 릴리스 sdk : 10.6입니다. 내 응용 프로그램을 보관하려고 할 때, 나는 다음과 같은 오류 있어요 :
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)
그것은 ARC에 문제처럼 보인다,하지만 난 아무 단서 곳을 고정에서 시작되지해야합니다. 어떤 제안? 감사.
감사합니다. 실제로 해당 스레드를 읽었지만 배포 대상과 혼동하여 sdk를 릴리스했습니다. 이제 괜찮아. 감사. –
일반적으로 디버그/릴리스에 대해 서로 다른 SDK 버전을 사용하지 않는 것이 좋습니다. 프레임 워크는 링크 된 것을 확인하고 호환성을 위해 다르게 동작하는 경우가 있으므로 –