2011-12-30 1 views
4

배포 대상 4.0 및 기본 SDK 5.0을 사용하는 iPhone 앱이 있습니다. 응용 프로그램은 아이폰 OS 5 시뮬레이터에 잘 실행하지만 4.3 시뮬레이터에게 응용 프로그램 chrashes을 찍으 때 나는이 얻을 :iOS 4에서 iOS 5 앱을 실행하는 데 어려움이 있음

dyld을 : 실패 바인딩 게으른 기호 : 기호를 찾을 수 없습니다 _objc_retainAutoreleasedReturnValue가 참조 된에서 :/사용자/조아킴 예상/라이브러리/응용 프로그램 지원/아이폰 시뮬레이터/4.3.2/응용 프로그램/F6CE76EA-DA7E-4BAC-A3AC-3CE2B51C0CD9/PingPalARC.app/PingPalARC : /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4 .3.sdk/시스템/라이브러리/프레임 워크/Foundation.framework/Foundation

dyld : 기호를 찾을 수 없음 : _objc_retainAutoreleasedReturnValue 012/사용자가/조아킴은/라이브러리/응용 프로그램 지원/아이폰 시뮬레이터/4.3.2/응용 프로그램/F6CE76EA이-DA7E-4BAC-A3AC-3CE2B51C0CD9/PingPalARC.app/PingPalARC 에서 예상 :에서 3, 가 참조 된 /개발자/플랫폼/iPhoneSimulator.platform/개발자/SDK를/iPhoneSimulator4.3.sdk/시스템/라이브러리/프레임 워크/Foundation.framework/재단

적용 부하가-규칙 sharedlibrary 모든 (GDB)

이 프로젝트는 사용하지 않습니다 ARC 기본적으로, 그러나 거기에 몇 가지 클래스에 대한 컴파일 소스 아래에 -fobjc-arc 플래그를 사용하여 ARC 설정했습니다

약한 참조를 사용하지 않고 스토리 보드를 사용하지 않으므로 내 앱이 iOS 4.x에서 작동하지 않아야하는 이유를 알 수 없습니다. 사람이 내 응용 프로그램은 모두 아이폰 OS 4, 5

추가 프레임 워크에서 작동하려면 내가 위해서는 놓친 것을 말해 줄 수 : 정말 시스템 구성 지도 키트 CFNetwok 핵심 위치

+0

관련 스레드 : http://stackoverflow.com/q/11842465/96716 –

답변

2

하지 대답하지만, 누군가가 나를보다 지식이있는 사람에게 도움이 될 경우를 대비 한 좀 더 자세한 정보 ...

objc_retainAutoreleasedReturnValue(obj)은 그 이름이 말하는 것입니다. 개념적으로, 지정된 객체가 자동 릴리즈 풀에 있다면, 거기에서 꺼내어 암시 적으로 그 객체를 유지하고 나중에 적절한 릴리스가 추가됩니다. 따라서 개념적으로 임시 객체가 자동 복구 풀에 쌓일 때 발생할 수있는 메모리 병목 문제를 피하는 방법입니다. 그래서 그것은 새로운 행동이 아니라 최적화입니다.

ARC 컴파일러는 ARC 파일 중 하나에 자동 완성 된 개체를 수신하는 일부 메서드가 포함되어 있습니다. 당신이 말했듯이, 그것은 약한 참조 및 스토리 보드와 관련이 없으며 논리적으로 iOS 4 호환성을 유지하기 위해 할 수없는 일입니다.

나는 모든 것을 말했지만 분명하지만 위장하기는 힘들다는 자신감이 전혀 아닙니다. ARC 클래스를 수정하여 자동 복구 된 객체를 수신하거나 ARC를 완전히 끌 수 없도록합니다. Apple은 iOS 4 장치에 대한 objc_retainAutoreleasedReturnValue 대안을 제공하는 안전한 방법을 생각할 수 없도록 동적으로 링크 된 라이브러리를 배포 할 수 있도록 허용하지 않습니다.

+0

흠, 내 코드를 다시 작성해야한다는 것이 두려웠습니다. 도와 줘서 고마워. – joakimb

3

iOS 4에 내장되어 있지 않은 ARC를 사용하고 있습니다. 배포 대상을 4로 설정 했으므로 arclite 라이브러리가 포함되어 있습니까?https://devforums.apple.com/message/588316

는 (아, 당신이 그랬던 것처럼 들리 겠지만, 당신은 ARC를 사용하는 IDE를 이야기하지 않습니다. 당신은 스스로를 포함해야합니다 그래서.)

+0

흠, 내일 그걸 들여다 가서 어떻게 돌아 갔는지 말해 줄께. – joakimb

1

이 autoreleasepool 블록 내에서 모든 임시 변수 선언을 추가 함수 내부.