Xcode : 코드가 구문 색상을 잃습니다.


80

다양한 상황에서 Xcode 3.1 (Leopard)의 Objective-C 코드가 타이핑 후 적절한 구문 색상을 얻지 못하거나 색상을 잃을 수 있습니다.

이것은 새로운 사용자 정의 기호의 "새로 고침"문제가 아니라 Cocoa 프레임 워크 기호에도 영향을줍니다.

때때로 CMD-a가 코드 페이지의 모든 텍스트를 선택하면 색상이 (재) 나타나고, 때때로 선을 두 번 클릭하여 선택하면 작동합니다. 때로는 해당 기호를 얻기 위해 기호에 공백을 추가 / 삭제해야합니다. (재) 색칠하기. 프로젝트를 다시 빌드하거나 닫거나 다시 열면 작동하거나 작동하지 않을 수 있습니다.

Xcode의 알려진 문제입니까? 나에게 너무 짜증나는 일 때문에 나는 SO와 내가 기대하는 다른 곳에서 그것에 대한 많은 토론을 찾지 못했습니다.

그리고 전역 구문 재색을 강제하는 명령이 있습니까?


또한 여기에 내 대답을 확인 stackoverflow.com/questions/1627033/...
Gajendra K 차우

답변:


148

1.) 프로젝트-> 빌드 설정-> 헤더 검색 경로로 이동하십시오.

2.) "$ (SRCROOT) / **"추가

3.) 프로젝트를 닫고 다시로드합니다.

4.) Xcode-> Window-> Organizer-> Projects-> $ YourProject-> Delete Derived Data로 이동합니다.

5.) XCode가 모든 인덱스를 다시 빌드 할 때까지 잠시 기다리십시오.


자세한 정보를 얻으려면 자세한 로깅을 활성화하십시오.

1.) 터미널 앱에서 Xcode 로그 수준 높이기 : 기본값은 com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3을 작성합니다.

2.) 콘솔 앱을 엽니 다. "xcode"검색

3.) pch 파일에 언급 된 헤더 파일에 대해 "파일을 찾을 수 없음"오류를 보았습니다 (따라서 위의 수정 사항).


2
두 번째 답변은 매우 도움이되었습니다 !!
Denis Mikhaylov 2011 년

2
올해 WWDC의 실험실에서의 경험은 구문 강조 기능이 작동하기를 원한다면 사전 컴파일을 완전히 끄는 것이 었습니다. 저에게는 효과가 있었지만 부적절한 수정처럼 보입니다
Stew

감사합니다, @Lars schneider. 좋은 방법입니다.
Tirth

2
감사합니다! # 4 (파생 데이터 삭제)도 저에게 효과적이었습니다.
Mark Mckelvie 2012

1
이것은 Xcode 8.3에서 저에게 효과가 있었지만 이전에 8.2에서 작동했던 다른 솔루션은 구문 강조 표시를 복원하지 않았습니다. 훌륭하고 시대를 초월한 답변!
Adrian

43

나는 Xcode 3에서 괜찮은 프로젝트와 Xcode 4에서 구문 강조 및 코드 완성이 손상된 프로젝트에서 동일한 문제가 발생했습니다. 나를 위해 문제를 100 % 재현 / 수정합니다.

앞서 언급 한 모든 솔루션을 아무 소용없이 시도한 후 처음부터 프로젝트를 만들고 모든 파일과 폴더를 힘들게 다시 가져 오려고했습니다. 몇 개의 파일을 가져올 때마다 확인했지만 구문 강조가 여전히 작동했습니다. 그들 중 마지막 몇 명 이후에도 여전히 그랬습니다. 그런 다음 이전 프로젝트에 있던 프로젝트 .pch 파일에 몇 가지 공통 헤더 파일을 포함하는 것을 잊었 기 때문에 실패한 빌드를 쳤습니다. 그 때 CodeSense가 다시 중단되었습니다.

추가 조사 결과 .pch와 동일한 프레임 워크 헤더 파일을 가져 오는 헤더 파일을 가져 오면 CodeSense가 중단된다는 사실을 발견했습니다. 동일한 설정이 Xcode 3에서 문제를 일으키지 않았습니다.

예:

project.pch

#import <Foundation/Foundation.h>
#import "projectConfig.h"

projectConfig.h

#import <Foundation/Foundation.h>
#import "one.h"
#import "two.h"

그래서 완전히 불필요한

#import <Foundation/Foundation.h>

'projectConfig.h'의 지시문은 강조 표시를 수정할 수 있으며 코드 완성도 다시 표시됩니다. 귀하의 문제가 내 것과 동일하다면.


예 ... 똑같은 문제가 있었으며 분노의 해결책으로 해결되었습니다.

4
왜 이것이 성층권에 찬성하지 않습니까? 내 헤더 문제를 모두 정리하지 않고 대신 내 대상에 대한 Precompile Prefix Header 옵션을 끄고 모두 정상입니다. 마지막으로 팀 전체를 4.2로 업그레이드 할 수 있습니다.
Rob Booth

2
효과가있다! @Rob Booth와 동일하게 수행하고 "Precompile Prefix Header"(NO로 설정)를 끄고 프로젝트를 정리하고 파생 데이터를 삭제했습니다. 내 구문 강조 표시가 다시 시작되었습니다!
hbobenicio

이것은 내 문제를 해결했습니다. 내 것은 재단 파일이 아니라 사용자 지정 클래스였습니다. 방금 .pch 파일에서 제거한 다음 다시 읽고 다른 클래스 파일에서 모든 인스턴스를 제거했습니다.
Bot

감사합니다. :) 나는 당신의 설명을 정확히 따랐습니다. 내 .PCH에서 가져온 모든 파일에서 Foundation 및 UIKit를 제거했습니다.
Timo

16

구문 색상을 잃은 파일을 선택하고 편집기> 구문 색상> ( '기본값'대신 언어 선택 (예 : Objective C ++)를 누르십시오.


2
이것은 나에게 일어난 일입니다. XCode가 하나의 파일에 대해 올바른 파일 유형 대신 일반으로 기본 설정되는 이유는 확실하지 않지만이 단계로 해결되었습니다. 먼저 파생 데이터를 정리하고 삭제하려고 시도했는데, 이것이 범인이라고 생각했습니다.
Rudi 2013

건배 ... 사과는 나를 위해 롤 덕분에 동료를 애플 스크립트를 선택했다
크람 타파

7

구문 색상을 다시 얻는 가장 좋은 방법은 Xcode를 종료하고 다시 시작하는 것입니다. 이유를 말할 수는 없지만 매번 작동합니다.


1
저에게는 프로젝트를 다시 여는 것만으로도 충분했습니다.
thgc

얼마나 미쳤습니까! 이전에 실패했던 카테고리의 하이라이트를 수정했을뿐만 아니라 작업을 시작했습니다
Judioo

4

나는 다음이 종종 트릭을 할 것임을 알았습니다 .

"Build Settings"에서 "Base SDK"와 "Architecture"를 모두 "다시 선택"합니다. ( "브라우저 모드"에서 왼쪽 상단의 파란색 프로젝트 아이콘을 클릭합니다.1 을 클릭 한 다음 프로젝트 설정을 클릭하고 거기에있는 항목을 엉망으로 만듭니다.

그들이 모두 정렬되어 있는지 확인하십시오. 당신이 거기에있는 동안 거기에서 약간의 흔들림을 하는 것이 아프지 않습니다 . xCode에 매우 작은 미니 스트로크가 있음을 알 수 있습니다. 64 비트와 32 비트 사이를 전환 할 때마다… 이것은 일반적으로 코드 강조 표시가 밤에 죽었는지 아니면 괜찮은지 알 때입니다.

종종 저는 32 비트 모드에서 즉시 하이라이트되는 프로젝트를 가지고 64 비트에 앉아 있습니다. 누가 알 겠어요 .. Ahh, Xcode, 엉뚱한 바보.


1
대답은 나에게 많은 도움과 일 ...하지만 당신의 쓰기 스타일은 : 개선 될 수
ItalyPaleAle

돌이켜 보면 영어가 모국어가 아닌 사람에게는이 대답을 이해하기 어려울 수 있습니다. 아아, 나에게 ... 그것은 hillairballs 입니다.
Alex Gray

3

프로젝트-> 빌드 설정 탭-> Apple LLVM 언어 5.0-> Prefix Header를 YES로 사전 컴파일하십시오. NSLog가 강조 표시되지 않았습니다. 현재 Xcode 5.0.1을 실행 중입니다 =) 감사합니다 @rebelzach



2

질문 과 비슷한 오류 인 것 같습니다.

내가 설정하여이 문제를 해결 할 수있었습니다 Precompile Prefix HeaderNo빌드 설정한다.


1

최근에 비슷한 문제가 발생하여 모든 채색 및 자동 완성 기능이 기본 제공 프레임 워크에서 작동하지 않고 내 클래스가 여전히 작동했습니다. 누군가 나에게 빌드 설정에서 "Run Static Analyzer"를 끄라고 권했습니다. 이상하지만 효과가 있습니다.


1

저에게는 프로젝트의 이름을 바꾸었고 Tests는 대상이 여전히 이전 pch 위치를 가리키고 있었지만 내 앱 대상이 새 위치를 가리키고있었습니다.

앱 델리게이트가 여전히 코드 센스를 가지고 있다면 당신에게도 해당 될 수 있습니다. 프로젝트로 이동하여 '테스트'대상 검색 '접두사'를 선택하고 '앱'대상의 해당 값으로 설정하십시오.


0

프로젝트 설정 ( 프로젝트> 프로젝트 설정 편집 메뉴)을 연 다음 일반 탭 에서 코드 감지 인덱스 다시 작성 버튼 을 클릭합니다 . 그러면 Xcode가 구문 색상 지정에 사용하는 인덱스가 다시 생성됩니다.

이 프로세스는 더 큰 프로젝트의 경우 시간이 걸릴 수 있으므로 활동 창 ( 창> 활동 메뉴) 에서 진행 상황을 확인할 수 있습니다 .


2
시간이 지남에 따라 문제가 해결되지 않습니다. XCode는 단순히 구문을 강조 표시하거나 자동 완성을 표시하지 않기 때문에 뭔가 잘못하고있는 것 같습니다.
Jessedc 2010

1
이러한 종류의 문제에 대해 Apple에 대한 버그를 기록했는지 확인하십시오 : bugreport.apple.com.
Lyndsey Ferguson

0

또한 XCode4에는 코드 감지 인덱스를 다시 작성하는 버튼이 없습니다.


나는 이것이 아마도 XCode4가 더 이상 코드 감지 인덱스를 필요로하지 않기 때문이라고 어딘가에서 읽었습니다. 별도의 인덱스를 유지하는 대신 새로운 Clang 구문 분석을 직접 사용한다고 생각합니다. 이것이 코드 제안이 컴파일러 관점에서 의미가있는 코드 완성 만 제안하기 때문에 훨씬 더 정확한 이유이기도합니다.
markquezada 2011

1
- 방법이 밖으로 그것은집니다 stackoverflow.com/questions/1627033/...
Arkaaito

0

동일한 문제가 발생했으며 시스템 기본 컴파일러 인 LLVM GCC 4.2를 사용하도록 빌드 설정을 업데이트하여이 문제를 해결했습니다.

여러 가지 요인이있는 것 같습니다.


0

이 문제도 경험하고 "인덱스 재 구축", "XCode 다시 시작", "컴파일러 설정을 LLVM GCC 4.2로 변경"중 하나의 솔루션을 시도했습니다. 그것들은 나를 도와주지 않았습니다.

그래서 헤더 파일의 새로운 생성과 함께 바로 다음 코드를 추가하려고했습니다.

#include "header.h"

using namespace cocos2d

그러면 앞서 헤더 파일에 추가 된 코드가 색상 화되어 클래스와 사물을 인식 할 수 있습니다.

cocos2d-x를 사용 했으므로 구문은 C ++를 기반으로합니다. 아직 Objective-c로 테스트하지는 않습니다.


0

누군가는 여전히 이유를 모릅니다. XCode 8.2로 열면 작동합니다.

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