프로젝트에서 단일 파일에 대해 ARC를 비활성화하려면 어떻게해야합니까?


1342

프로젝트에서 ARC를 성공적으로 사용하고 있습니다. 그러나 ARC 규칙이 지금보다 조금 더 취약한 몇 가지 파일 (예 : 단위 테스트 및 모의 객체)이 발생했습니다. 이 옵션을 찾을 수 없지만 파일별로 ARC를 비활성화하는 방법이 있다는 것을 들었습니다.

이것이 가능한가? 파일 단위로 ARC를 비활성화하려면 어떻게합니까?


답변:


2168

-fno-objc-arc해당 파일에 컴파일러 플래그를 추가하여 개별 파일에 대해 ARC를 비활성화 할 수 있습니다.

타겟-> 빌드 단계-> 컴파일 소스에서 컴파일러 플래그를 추가합니다. 컴파일러 플래그 아래 행의 오른쪽 열을 두 번 클릭해야합니다 . cmd 버튼을 누른 상태에서 파일을 선택한 다음 enter를 눌러 플래그 편집 상자를 표시하여 여러 파일에 파일을 추가 할 수도 있습니다. (여러 파일을 편집하면 이미있을 수있는 플래그를 덮어 씁니다.)

https://github.com/jaminguy/NoArc 예제가있는 샘플 프로젝트를 만들었습니다.

xcode

자세한 내용은이 답변을 참조하십시오 : 일부 파일에 대한 자동 참조 계산 비활성화


58
따라서이 플래그를 추가 할 위치가 너무 직관적이지 않습니다. 그러나 Xcode 4의 빌드 단계 및 컴파일 소스에는 실제로 두 개의 열이 있습니다. 하나는 파일 이름이고 다른 하나는 해당 파일의 컴파일 플래그입니다. 이 특정 컴파일러 플래그를 입력하는 곳입니다.
casademora

3
디렉토리, 즉 디렉토리의 모든 파일에 대해 지정할 수 있습니까? 그룹은 어떻습니까?
ma11hew28

4
디렉토리가 없습니다. 빌드 설정에서 한 번에 하나의 파일 만 :(
casademora

13
@casademora이 정보에 대한 충분한 공감을 얻을 수 없습니다. 감사합니다.
theTRON

26
@casademora 한 번에 여러 파일을 선택할 수 있지만 두 번 클릭하지 말고 RETURN을 누르십시오. 그런 다음를 추가하면 -fno-objc-arc선택한 모든 파일에 추가됩니다. 편집 그냥이 하나 아래의 답변을 보았다 :(
pkyeck

460

여러 파일에서 ARC비활성화 하십시오.

  1. Xcode의 Target / Build Phases / Compile Sources에서 원하는 파일을 선택하십시오.
  2. 엔터 키를 치시오
  3. -fno-objc-arc 유형
  4. Enter 또는 완료를 누르 십시오

;)

여기에 이미지 설명을 입력하십시오


2
고마워! 이 기능을 오랫동안 찾고있었습니다. 여러 행을 선택한 경우 두 번 클릭이 작동하지 않지만 Enter 키를 누르면 작동합니다. 그래서 이상한.
bobmoff

4
오 와우. 나는 업장을 다시 공표하기 위해 모든 업장을 보냈다. 공유해 주셔서 감사합니다!
jemmons

이것은 더 이상 Xcode 4.3.3에서 작동하지 않는 것 같습니다. 선택한 파일을 두 번 클릭하거나 Enter 키를 누르면 -fno-ojbc-arc 플래그를 넣을 수있는 대화 상자가 표시되지 않습니다.
tom

나는 4.3.3과 지금 4.4 DP7을 가지고 있었고 여전히 잘 작동합니다. Xcode를 다시 시작하고 컴퓨터를 다시 시작하고 권한을 복구하십시오.
Tibidabo

44

Xcode 4.3의 경우 더 쉬운 방법은 다음과 같습니다. objective-C ARC로 편집 / 리팩터링 / 변환 한 다음 변환하지 않으려는 파일을 확인하십시오. 이 방법은 위의 컴파일러 플래그를 사용하는 것과 동일합니다.


36

개별 파일을 비 아크로 만드는 것은 매우 간단한 방법입니다.

아래 단계를 따르십시오.

개별 파일에서 ARC를 비활성화합니다 :

  1. Xcode의 Target / Build Phases / Compile Sources에서 원하는 파일을 선택하십시오.

  2. NON-ARC PRESS는 유형 입력 당신이 그것을 확인하고자하는 .m 파일을 선택 -fno-objc 아크를

ARC 파일이 아닌 ARC 파일 플래그 : -fno-objc-arc

비 ARC 프로젝트 플래그에 대한 ARC 파일 : -fobjc-arc


35

참고 : 많은 파일에 대해 ARC비활성화 하려면 다음을 수행해야합니다.

  1. "빌드 단계"-> "컴파일 소스"열기
  2. 가진 파일을 선택 "left_mouse를"+ "에 cmd" (분리 된 파일의 경우) 또는 + "교대" (그룹화 된 파일 - 처음과 마지막 선택)
  3. 엔터 키를 치시오"
  4. -fno-objc-arc
  5. "입력"을 다시 누르십시오
  6. 이익!


13
  1. Xcode 프로젝트 선택
  2. 목표로 이동
  3. 빌드 단계 섹션을 선택하십시오.
  4. 빌드 단계 섹션에서 컴파일 소스를 선택하십시오.
  5. ARC를 비활성화하지 않을 파일을 선택하고 -fno-objc-arc를 추가하십시오

특정 파일에 대한 ARC 비활성화


13

Xcode의 특정 파일에 대해 ARC (Automatic Reference Counting)를 비활성화 할 수 있습니다.

대상-> 빌드 단계-> 소스 컴파일-> 파일 선택 (두 번 클릭)-> "-fno-objc-arc"를 팝업 창에 선택하십시오.

"접근성"파일을 사용할 때이 상황이 발생했습니다.

아래 그림에 나와 있습니다.

여기에 이미지 설명을 입력하십시오



11

비디오 에서 설명한 네 가지 필수 단계

    //1. Select desired files
    //2. Target/Build Phases/Compile Sources
    //3. Type -fno-objc-arc
    //4. Done


6

Unity를 사용하는 경우 Xcode에서이를 변경할 필요가 없으며 Unity 내부에서 특정 파일의 메타 데이터에 컴파일 플래그를 적용 할 수 있습니다. 프로젝트 패널에서 해당 항목을 선택하고 인스펙터 패널에서 적용하면됩니다. Cloud Build를 사용하려는 경우 필수입니다.여기에 이미지 설명을 입력하십시오


5

“-fno-objc-arc”플래그를 추가하십시오.

간단한 단계 : App> Targets> Build Phases> Compile Sources> 클래스“-fno-objc-arc”뒤에 플래그 추가


5

다른 모든 답변은 MRC (Manual Reference Count)를 비활성화하고 ARC (Automatic Reference Count)를 활성화하는 방법을 설명하고 있다고 생각합니다. MRC (Manual Reference Count)를 사용하려면, 즉 여러 파일에서 ARC (Automatic Reference Count)를 비활성화하려면 :

  1. Xcode의 Target / Build Phases / Compile Sources에서 원하는 파일을 선택하십시오.
  2. 엔터 키를 치시오
  3. -fobjc-arc 유형
  4. Enter 또는 완료를 누르십시오

2

ARC를 적용하지 않으려는 파일 앞에 Build Phases> Compile Sources에서 -fno-objc-arc 플래그를 사용하십시오.


-1
  1. 프로젝트 선택-> 대상-> 빌드 단계-> 컴파일러 소스
  2. 파일 선택-> 컴파일러 플래그
  3. -fno-objc-arc 추가

-2

앱으로 이동-> 대상-> 빌드 단계-> 컴파일 소스

이제 ARC를 비활성화하려는 파일을 선택하십시오.

이 스 니펫을 붙여 넣습니다. "-fno-objc-arc"붙여 넣기 후 Enter 키를 누릅니다

ARC를 비활성화하려는 각 파일에서.


5
당신의 대답은이 오래된 질문에 추가를 제공하지 않습니다.
vikingosegundo

-2

다음 단계에 따라 ARC 비활성화

Xcode 프로젝트 선택 대상으로 이동 빌드 단계 섹션 선택 빌드 단계 섹션에서 컴파일 소스를 선택하십시오. ARC를 비활성화하지 않을 파일을 선택하고 -fno-objc-arc를 추가하십시오


1
당신의 대답은이 오래된 질문에 추가를 제공하지 않습니다.
jomafer

어떤 추가가 필요합니다. 당신이 우리보다 더 잘 알고 있다면.
annu

난 당신을 downvote하지 않았다. 이 질문은 7 월 11 일 11시 5 분 21 초에 요청 된 것입니다. 유용한 정보를 추가하지 않는 동일한 답변을 가진 답변이 너무 많습니다 ... 누군가가 그 이유 때문에 당신을지지한다고 생각합니다 ...
jomafer

그것에 대해 간단히 설명해 주시겠습니까?
annu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.