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 Header에 No빌드 설정한다.


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.