2012-01-09 1 views
3

ARC 프로젝트에서 사용되는 비 ARC 코드 인 Three20을 사용하고 있습니다. 나는 모든 적절한 컴파일러 플래그를 추가했으며 모든 것이 잘 동작한다. 그러나 Three20 클래스 중 일부를 서브 클래 싱해야하며 컴파일러 플래그를 ARC가 아닌 새 파일에 추가해야하는지 또는 컴파일러가 알아낼 수 있는지, 적절한 릴리스 호출을 추가해야하는지 잘 모르겠습니다.Xcode 4의 ARC 프로젝트에 ARC가 아닌 파일을 서브 클래스로 배열합니다.

그냥 요약하자면 : - 엑스 코드 4 에서 ARC 프로젝트 - 비 ARC에 정의 된 어떤 파일 을 하위 클래스 필요 - - 비 ARC 코드 (Three20) 을 포함 I 릴리스 호출을 추가해야합니까? - 하위 클래스에 ARC가 아닌 컴파일러 플래그를 추가해야합니까?

답변

2

예. ARC가 아닌 플래그 (-fno-objc-arc)와 retain/release 호출을 추가해야합니다.

하위 클래스가 ARC를 사용하는 경우 추가하지 말아주세요.하지만 문제를 묻는 것이므로 반대하는 것이 좋습니다.

+1

왜 문제를 묻고 있습니까? 누군가 ARC 가능 UIViewController 하위 클래스를 만들면 언제든지이 작업을 수행합니다. ARC는 클래스 별 또는 클래스 별이 아닌 파일 단위로 수행됩니다. 따라서 ARC가 아닌 기본 클래스의 ARC 하위 클래스를 만드는 데 전혀 문제가 없습니다. –

8

마이클

는 ARC/메모리의 소정의 슬롯이 현재의 방법/함수 호출을 넘어 계속할지에 기초하여 분리 의미론을 유지 판정 컴파일 시간 기술이다. 이 때문에 ARC를 사용하여 안전하게 하위 클래스를 혼합 할 수 있습니다. 나는 항상 그것을한다. 나는 또한 범주에서 그것을한다. 가비지 수집과 달리 ARC는 각 메소드/기능의 저장 공간에만 집중되어 있습니다. BTW, 대부분의 iOS 프레임 워크는 아직 ARC를 사용하지 않는 것처럼 보입니다. 따라서 프레임 워크 클래스를 만드는 모든 하위 클래스에는이 "문제"가 있으며 문제가되지 않습니다. 내가 할 - 엑스 코드 4 ARC 프로젝트 - - 비 ARC 파일에 정의 된 뭔가를 하위 클래스 필요 - 비 ARC 코드 (Three20)을 포함합니다 : 그냥 정리 해보에

:

는 특정 질문에 대답하려면 출시 요청을 추가해야합니까? - 하위 클래스에 비 -ARC 용 컴파일러 플래그를 추가해야합니까?

비 ARC 수퍼 클래스의 하위 클래스는 ARC 일 수도 있고 아닐 수도 있습니다. 앱의 기본 설정은 ARC이므로 하위 클래스에는 아무 것도하지 않아도됩니다.

앤드류