Xcode: mã mất màu cú pháp


80

Tôi thấy rằng trong nhiều tình huống khác nhau, mã Objective-C trong Xcode 3.1 (Leopard) có thể không nhận được màu cú pháp thích hợp sau khi nhập hoặc mất màu mà nó có.

Đây không chỉ là vấn đề "làm mới" với các biểu tượng tùy chỉnh mới - mà còn ảnh hưởng đến các biểu tượng khung Cocoa.

Đôi khi CMD-a để chọn tất cả văn bản trên trang mã sẽ làm xuất hiện màu (lại), đôi khi nhấp đúp vào một dòng để chọn nó sẽ hoạt động, đôi khi tôi phải thêm / xóa một khoảng trắng trong một biểu tượng để có được biểu tượng đó. sang (lại) màu. Việc xây dựng lại, hoặc đóng / mở lại dự án có thể hoạt động hoặc không.

Đây có phải là sự cố đã biết với Xcode không? Đối với một cái gì đó quá khó chịu với tôi, tôi không tìm thấy các cuộc thảo luận phong phú về nó trên SO và những nơi khác mà tôi mong đợi.

Và có lệnh nào để bắt buộc trộn lại cú pháp toàn cục không?


Ngoài ra kiểm tra câu trả lời của tôi ở đây stackoverflow.com/questions/1627033/...
Gajendra K Chauhan

Câu trả lời:


148

1.) Đi tới Dự án -> Cài đặt Xây dựng -> Đường dẫn Tìm kiếm Tiêu đề

2.) Thêm "$ (SRCROOT) / **"

3.) Đóng và tải lại dự án

4.) Đi tới Xcode -> Window -> Organizer -> Projects -> $ YourProject -> Delete Derived Data

5.) Chờ một chút cho đến khi XCode xây dựng lại tất cả các chỉ báo


Để biết thêm thông tin, hãy kích hoạt ghi nhật ký chi tiết:

1.) Tăng cấp độ nhật ký Xcode trong ứng dụng Terminal: mặc định ghi com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

2.) Mở ứng dụng Console. Tìm kiếm "xcode"

3.) Tôi thấy lỗi "không tìm thấy tệp" cho các tệp tiêu đề được đề cập trong tệp pch (do đó, cách khắc phục ở trên)


2
phần thứ hai của câu trả lời của bạn rất hữu ích !!
Denis Mikhaylov

2
Kinh nghiệm của tôi trong các phòng thí nghiệm tại WWDC năm nay là nếu bạn muốn làm nổi bật cú pháp để làm việc, tắt trước biên soạn hoàn toàn ... nó làm việc cho tôi, nhưng có vẻ như một sửa chữa không đủ mặc dù
Stew

Cảm ơn, @Lars schneider. nó là một cách tốt đẹp.
Tirth

2
Cảm ơn rất nhiều! # 4 (xóa dữ liệu dẫn xuất) cũng làm việc cho tôi.
Mark Mckelvie

1
Điều này làm việc với tôi trong Xcode 8.3, trong khi một giải pháp khác trước đây hoạt động theo 8.2 đã ngừng khôi phục đánh dấu cú pháp. Câu trả lời tuyệt vời, vượt thời gian!
Adrian

43

Tôi đã gặp vấn đề tương tự với một dự án tốt trong Xcode 3 và đối với dự án này, đánh dấu cú pháp và hoàn thành mã đã bị hỏng trong Xcode 4. Tôi đã mất nửa ngày để tìm ra nó nhưng tôi thấy rằng các bước sau sẽ tái tạo / khắc phục sự cố 100% cho tôi.

Sau khi thử tất cả các giải pháp nói trên đều không có kết quả, tôi đã thử tạo dự án từ đầu và nhập lại mọi tệp và thư mục một cách cẩn thận. Mỗi khi tôi nhập một vài tệp, tôi đã kiểm tra và đánh dấu cú pháp vẫn hoạt động. Ngay cả sau một vài trong số họ cuối cùng, nó vẫn làm. Sau đó, tôi nhấn xây dựng không thành công vì tôi quên bao gồm một vài tệp tiêu đề phổ biến trong tệp .pch của dự án đã có trong dự án cũ. Và đó là khi CodeSense lại bị phá vỡ.

Sau khi điều tra thêm, chúng tôi nhận thấy rằng nếu bạn nhập tệp tiêu đề mà lần lượt nhập tệp tiêu đề khung giống với tệp .pch đã có, thì CodeSense sẽ bị hỏng. Thiết lập tương tự không gây ra bất kỳ sự cố nào trong Xcode 3.

Thí dụ:

project.pch

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

projectConfig.h

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

Vì vậy, bằng cách loại bỏ hoàn toàn không cần thiết

#import <Foundation/Foundation.h>

chỉ thị từ 'projectConfig.h', bạn có thể sửa lỗi đánh dấu và mã hoàn thành cũng sẽ quay lại cho bạn. Nếu vấn đề của bạn giống với vấn đề của tôi.


vâng ... chỉ gặp vấn đề tương tự ... và giải pháp của rage đã khắc phục nó.
mã chéo

4
Tại sao điều này không được bình chọn vào tầng bình lưu? Tôi không bận tâm đến việc dọn dẹp tất cả các vấn đề về tiêu đề của mình và thay vào đó chỉ tắt tùy chọn Tiêu đề tiền tố biên dịch cho mục tiêu của tôi và tất cả đều ổn. Cuối cùng, tôi có thể nâng cấp toàn bộ nhóm lên 4.2 vì đó là nơi chúng tôi đã phá vỡ.
Rob Booth

2
Nó hoạt động! Tôi đã làm tương tự như @Rob Booth, tôi đã tắt "Tiêu đề tiền tố biên dịch" (đặt nó thành KHÔNG), làm sạch dự án của mình và xóa dữ liệu bắt nguồn của nó. Đánh dấu cú pháp của tôi đã khởi động lại để hoạt động!
hbobenicio

điều này đã khắc phục sự cố của tôi. Của tôi không phải là tệp Foundation mà là một lớp tùy chỉnh. Tôi chỉ xóa nó khỏi tệp .pch, sau đó đọc nó và xóa tất cả các bản sao của nó trong các tệp lớp khác của tôi.
Bot

Bạn có lời cảm ơn của tôi. :) Tôi đã làm theo mô tả của bạn chính xác. Đã xóa Foundation và UIKit khỏi tất cả các tệp mà tôi đã nhập trong .PCH của mình.
Timo

15

Chỉ cần chọn tệp bị mất màu cú pháp, nhấn Trình chỉnh sửa> Tô màu cú pháp> (chọn ngôn ngữ của bạn (Mục tiêu c ++ cho ví dụ) thay vì 'Mặc định'


2
Điều này đã xảy ra với tôi. Không chắc tại sao XCode sẽ mặc định thành Chung thay vì đúng loại tệp chỉ cho một tệp, nhưng bước này đã giải quyết được vấn đề đó. Trước tiên, tôi đã thử xóa và xóa dữ liệu có nguồn gốc, mà tôi cho rằng đó là thủ phạm.
Rudi

chúc mừng ... apple đã chọn AppleScript cho tôi lol cảm ơn người bạn đời
Bikram Thapa

7

Tôi đã tìm thấy cách tốt nhất để lấy lại màu cú pháp là thoát khỏi Xcode và khởi chạy lại nó. Tôi không thể cho bạn biết tại sao, nhưng điều đó luôn hiệu quả.


1
Đối với tôi, nó thậm chí đủ để mở lại dự án.
thgc

Thật là điên rồ! Nó không chỉ sửa chữa làm nổi bật câu trả lời nào trước đây đã thất bại cũng bắt đầu làm việc
Judioo

4

Tôi thấy rằng những điều sau đây thường sẽ thực hiện thủ thuật…

"Chọn lại" cả "SDK cơ sở" - và "Kiến trúc" - trong "Cài đặt bản dựng". (Nhấp vào biểu tượng dự án màu xanh lam ở trên cùng bên trái, khi ở "Chế độ trình duyệt", hay còn gọi là1 , sau đó nhấp vào cài đặt dự án và làm rối tung những thứ ở đó.

Hãy chắc chắn rằng tất cả họ đều xếp hàng / không có vấn đề gì khi thực hiện một chút lang thang trong đó, trong khi bạn ở trong đó… bạn biết chỉ cần trộn nó một chút. Bạn sẽ nhận thấy xCode có một nét chấm nhỏ rất nhỏ - mỗi khi bạn chuyển đổi giữa 64 và 32 bit… Đây thường là lúc tôi biết liệu mã tô sáng đã chết trong đêm hay tôi sẵn sàng tiếp tục.

Thông thường, tôi sẽ có một dự án được đánh dấu ngay lập tức ở chế độ 32 bit, và chỉ cần ngồi ở đó trong 64… Ai biết được .. Ahh, Xcode, đồ ngu ngốc.


1
Câu trả lời đã giúp tôi rất nhiều và làm việc ... Tuy nhiên, phong cách viết của bạn có thể được cải thiện :)
ItalyPaleAle

Khi nhìn lại, có, câu trả lời này thực sự có thể khó hiểu đối với bất kỳ người nói tiếng Anh không phải là bản ngữ. Than ôi, đối với tôi ... đó là những quả cầu đồi .
Alex Grey

3

Chọn dự án của bạn -> tab Cài đặt xây dựng -> Ngôn ngữ LLVM của Apple 5.0 -> Biên dịch đầu tiền tố thành CÓ. NSLog đã không làm nổi bật. Hiện đang chạy Xcode 5.0.1 Hy vọng nó sẽ giúp ích =) Cảm ơn @rebelzach


2

Tôi có thể xác nhận cách khắc phục 100% cho sự cố này, dựa trên một câu hỏi tôi đã hỏi (và đã thực sự trả lời), như hình bên dưới. Một điều tôi sẽ nói thêm là đôi khi chính "khoảng trắng sai" cũng có thể góp phần làm mất đi phần nổi bật. Hãy tự dọn dẹp nó hoặc sử dụng plugin Goggle Toolbox cho Mac Xcode 4, bổ sung thêm một mục nhập trong Editmenu XCode được gọi Clean Up Whitespace.

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


2

Đây dường như là một lỗi tương tự từ câu hỏi này

Tôi đã có thể khắc phục sự cố này bằng cách đặt Precompile Prefix Headerthành Notrong cài đặt bản dựng.


1

Gần đây tôi đã gặp sự cố tương tự, tất cả tô màu và tính năng tự động hoàn thành đều ngừng hoạt động đối với các khung dựng sẵn, các lớp của riêng tôi vẫn hoạt động. Ai đó đã khuyên tôi nên tắt "Chạy trình phân tích tĩnh" trong cài đặt bản dựng. Thật kỳ lạ, nhưng nó đã hoạt động.


1

Đối với tôi nó là tôi đổi tên dự án của tôi, và thử nghiệm mục tiêu vẫn trỏ đến vị trí pch cũ, nhưng mục tiêu Ứng dụng của tôi đã trỏ đến vị trí mới.

Nếu người đại diện ứng dụng của bạn vẫn có cảm giác mã, đây cũng có thể là trường hợp của bạn. Đi vào dự án, chọn tiền tố tìm kiếm mục tiêu 'Kiểm tra' và đặt nó thành giá trị tương đương trong mục tiêu 'ứng dụng'.


0

Mở cài đặt dự án ( Project> Edit Project Settings menu) và sau đó nhấp vào nút Rebuild Code Sense Index trong tab Chung . Điều này sẽ tạo lại chỉ mục mà Xcode sử dụng để tô màu cú pháp.

Quá trình này có thể mất một lúc đối với các dự án lớn hơn, vì vậy bạn có thể kiểm tra tiến trình trong cửa sổ Hoạt động ( menu Window> Activity ).


2
Hết lần này đến lần khác điều này không khắc phục được sự cố cho tôi. Tôi phải làm gì đó sai, vì XCode chỉ đơn giản là không bận tâm đến việc đánh dấu cú pháp hoặc hiển thị tự động hoàn thành.
Jessedc

1
Hãy đảm bảo rằng bạn ghi lại lỗi chống lại Apple về các loại sự cố này: bugreport.apple.com.
Lyndsey Ferguson

0

Hơn nữa, trong XCode4 không có nút nào để xây dựng lại chỉ mục cảm giác mã.


Tôi đọc ở đâu đó rằng điều này có thể là do XCode4 không còn cần một chỉ mục mã cảm giác nữa. Tôi nghĩ rằng nó sử dụng trực tiếp phân tích cú pháp Clang mới thay vì giữ một chỉ mục riêng biệt. Đây cũng là lý do tại sao các đề xuất mã chính xác hơn nhiều vì nó chỉ đề xuất các hoàn thành mã có ý nghĩa từ quan điểm trình biên dịch.
markquezada

1
Hóa ra là có một cách - stackoverflow.com/questions/1627033/…
Arkaaito

0

Tôi đã gặp vấn đề tương tự và đã giải quyết vấn đề này bằng cách cập nhật cài đặt bản dựng của mình để sử dụng trình biên dịch mặc định của hệ thống, LLVM GCC 4.2.

Có vẻ như có nhiều yếu tố.


0

Tôi cũng gặp sự cố này và đã thử các giải pháp "xây dựng lại chỉ mục", "khởi chạy lại XCode", "thay đổi cài đặt trình biên dịch thành LLVM GCC 4.2". Những điều đó đã không giúp tôi ra ngoài.

Vì vậy, tôi đã cố gắng thêm đoạn mã sau ngay lập tức cùng với việc tạo mới tệp tiêu đề.

#include "header.h"

using namespace cocos2d

Sau đó, mã được thêm vào trước đó trong tệp tiêu đề được tô màu và nó có thể nhận ra các lớp và nội dung.

Tôi đã sử dụng cocos2d-x, vì vậy cú pháp của tôi dựa trên c ++. Tuy nhiên, tôi chưa kiểm tra nó với Objective-c.


0

Đối với một người nào đó vẫn không biết tại sao. Hãy mở với XCode 8.2 , nó sẽ hoạt động

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.