초보 iPhone 프로그래머로서 iOS 5 또는 이전 버전에서 사용할 앱을 작성하는 가장 좋은 방법은 무엇입니까? 특히 데이터 릴리스 / 보존을 계속 사용해야합니까? 아니면 무시해야합니까? 그게 그렇게 중요한 건가?
답변
그것은 당신에게 달려 있습니다. ARC (Automatic Reference Counting)를 사용하여 앱을 작성할 수 있으며 Xcode는 수정이 필요없이 ARC 지원 앱을 iOS 4에서 실행할 수 있도록 “접착 코드”를 작성합니다. 그러나 특정 기능은 작동하지 않으며 사용하려는 대부분의 라이브러리는 (때때로) 수많은 오류를 발생시키고 개발자가 ARC와 호환되는 업데이트를 릴리스 할 때까지 사용할 수 없습니다.
편집 : 최근에 파일별로 ARC를 끌 수 있음을 발견했습니다. pixelfreak 의 대답을 참조하십시오 . 따라서 내 조언은 여전히 유효하지만 이제 타사 라이브러리를 ARC와 함께 작동하도록 업데이트 할 필요가 없습니다.
특정 파일에 대한 ARC 옵트 아웃에 대해 Apple이 말하는 내용은 다음과 같습니다.
ARC를 사용하기 위해 프로젝트를 마이그레이션하면 -fobjc-arc 컴파일러 플래그가 모든 Objective-C 소스 파일의 기본값으로 설정됩니다. 해당 클래스에 대해 -fno-objc-arc 컴파일러 플래그를 사용하여 특정 클래스에 대해 ARC를 비활성화 할 수 있습니다. Xcode의 대상 빌드 단계 탭에서 소스 컴파일 그룹을 열어 소스 파일 목록을 표시합니다. 플래그를 설정할 파일을 두 번 클릭하고 팝업 패널에 -fno-objc-arc를 입력 한 다음 완료를 클릭합니다.
답변
개별 파일에서 ARC를 끄는 방법에 대해 여전히 궁금한 사람을 위해 내가 한 작업은 다음과 같습니다.
- 프로젝트 설정으로 이동하십시오.
Build Phases > Compile Sources
- ARC를 비활성화 할 파일을 선택하고 -fno-objc-arc 컴파일러 플래그를 추가 합니다. 파일을 선택한 다음 “Enter”키를 눌러 여러 파일에 대한 플래그를 한 번에 설정할 수 있습니다.
이것이 권장되는 방법인지 모르겠지만 저에게 효과적입니다.
PS : 나는 clang.llvm.org에서이 정보 수집 여기 이렇게하지 NDA에서 공개적으로 액세스 할 수 있습니다.
답변
iOS 5는 아직 NDA에 따라 공개 버전을 출시 할 때까지 계속 될 것입니다. 개발자 계정이있는 경우 Apple 개발자 포럼으로 이동 하여 질문하십시오.
이전 버전의 경우 참조를 계산하고 그에 따라 유지 및 릴리스해야합니다. 메모리 관리 가이드를 확인하십시오 .
편집 : 다음 은 자동 참조 계산에 대한 공개 사양 과 공개 iOS 5 페이지 의 인용문입니다 .
Objective-C 용 ARC (Automatic Reference Counting)는 메모리 관리를 컴파일러의 역할로 만듭니다. 새로운 Apple LLVM 컴파일러로 ARC를 활성화하면 유지 또는 릴리스를 다시 입력 할 필요가 없으므로 개발 프로세스가 크게 단순화되고 충돌 및 메모리 누수가 줄어 듭니다. 컴파일러는 개체를 완전히 이해하고 더 이상 사용되지 않는 즉시 각 개체를 해제하므로 앱이 예측 가능하고 부드러운 성능으로 그 어느 때보 다 빠르게 실행됩니다.
답변
세부 사항은 현재 NDA 아래에 있지만 Apple은 http://developer.apple.com/technologies/ios5/에 자세히 설명 된대로 iOS 5에서 ARC (Automatic Reference Counting)를 구현했습니다.
iOS 5 SDK를 사용하여 Xcode 4에서 새 앱을 개발하는 경우 유지 / 릴리스 계산을 무시해도됩니다.
sudo rm -rf는 좋은 지적을합니다. 타사 라이브러리가 크게 영향을받을 수 있습니다.
답변
아무도 SystemConfiguration.framework를 언급하지 않았 습니까? Frameworks 에 넣는 것을 잊지 마십시오 . 나는 그것을 깨닫기 위해 비참하게 몇 시간을 보냈다.
답변
확실히 개발자 나 팀의 선택입니다. ARC (Automatic Reference Counter)는 자동으로 메모리를 관리하여 작업을 좀 더 쉽게 만들어줍니다. 적절한 경우 해제, 유지 및 할당 해제됩니다. 아직 테스트 응용 프로그램에서 메모리를 관리하는 경험을 쌓아야한다고 생각합니다. 고려해야 할 또 다른 사항은 응용 프로그램이 타사 라이브러리에 의존하는지 여부입니다. ARC로 변환하지 않으면 응용 프로그램이 컴파일되지 않습니다. 선택은 당면한 상황에 따라 분명히 달라집니다.
답변
프로젝트 설정> 빌드 단계> 소스 컴파일에서 플래그를 -fno-objc-arc로 설정하십시오.