2012-03-20 46 views
17

Tôi gặp sự cố khá lạ trong XCode trên một trong các dự án của tôi.Sự cố với mã tự động hoàn thành/đánh dấu cú pháp trong XCode 4.x

Khi tôi bắt đầu viết mã của mình, tôi đã quen với việc hoàn thành tự động đề xuất nhiều mục nhập cho tôi. Vì một số lý do, kể từ hôm qua, điều này đã ngừng hoạt động. Giờ đây, tôi nhận được các mục nhập tự động hoàn thành lạ như "và", "the", "Andy", "MyCompanyName", v.v.

Điều này chưa từng xảy ra trước đây và vì vậy tôi nhầm lẫn là tại sao nó đã xảy ra ngay bây giờ và chỉ trên một trong các dự án của tôi. Tôi đã tìm kiếm trang web này trong một thời gian để sửa lỗi và tôi đã cố gắng xóa sạch dữ liệu có nguồn gốc, thoát khỏi XCode, xóa không gian làm việc và tệp người dùng khỏi dự án XCode và khởi động lại, nhưng sau khi làm như vậy, công việc tự động hoàn thành trong một thời gian , sau đó ngắt lại sau khoảng 30 giây mã hóa.

Đôi khi tôi có thể thấy các giải pháp tự động hoàn thành, nhưng chỉ là văn bản thuần túy (không có chỉ số lớp), khi đó các thời điểm khác sẽ ngừng hoạt động hoàn toàn.

Có ai khác có kinh nghiệm bất cứ điều gì như thế này và có thể cung cấp một số giải pháp?

Trả lời

42

Tôi đã trải qua một thời gian dài với dự án tiếp tục mất tự động hoàn thành và làm nổi bật cú pháp. Xóa thư mục dữ liệu gốc và khởi động lại Xcode sẽ sửa chữa nó tạm thời, và cuối cùng gần như đã trở thành bộ nhớ cơ bắp. Vấn đề của tôi dường như trở nên trầm trọng hơn khi sử dụng không gian làm việc có chứa nhiều dự án, nhiều dự án phụ thuộc vào nhau. Nó chỉ ra vấn đề là với các chỉ số clang. Dự án sẽ biên dịch một cách rõ ràng, nhưng nhìn vào đầu ra từ người lập chỉ mục, nó bị rải rác. Sửa tất cả những vấn đề này đã giải quyết được vấn đề của tôi.

trước khi làm bất cứ điều gì: đảm bảo ALL các mục tiêu trong ALL các dự án trong Workspace của bạn biên dịch sạch. Đó là không có ANY cảnh báo. Đây là một thất bại lớn về phía tôi - tôi đã có những mục tiêu cũ mà không biên dịch một cách rõ ràng. Một số trong số này không được sử dụng và có thể bị xóa, một số khác không phải ARC sử dụng các mô-đun trong các mục tiêu đã được chuyển đổi sang ARC (cũng đã chuyển đổi các mục tiêu đó) và một số chỉ cần sửa mã.

Khi bạn đã giải quyết TẤT CẢ những vấn đề đó, điều đầu tiên chúng tôi cần biết là nơi người lập chỉ mục không thành công, bằng cách thực hiện một chỉ mục đầy đủ của dự án của bạn.

  • Đầu tiên, Hãy chắc chắn rằng Xcode được đóng lại, sau đó bật lên cảnh báo indexer mức nhắn bằng cách nhập vào Terminal:

    defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3 
    
  • Sau đó tìm thư mục dữ liệu nguồn gốc cho dự án của bạn/workspace (có lẽ ~/Thư viện/Nhà phát triển/Xcode/DerivedData/tên dự án của bạn - một số ngữ pháp) và xóa nó (nhưng giữ thư mục Dữ liệu gốc được mở vì bạn có thể phải quay lại và thực hiện việc này một vài lần.

  • Tiếp theo, mở ứng dụng Console và nhấn Clear hiển thị, và thiết lập các bộ lọc để "IDE" để chỉ hiển thị các thông điệp chúng tôi quan tâm.

  • Cuối cùng, mở Xcode và dự án/workspace đó là gây ra sự cố của bạn và bạn sẽ thấy bàn điều khiển bắt đầu điền thông điệp.

  • Để tìm lỗi, hãy thay đổi bộ lọc Bảng điều khiển thành "lỗi:" - mục tiêu của chúng tôi là giảm số này xuống 0.

  • Phần lớn các lỗi tôi tìm thấy đều thiếu tệp tiêu đề. Bản thân Xcode có vẻ thông minh hơn người lập chỉ mục. Dường như có thể tìm và bao gồm các tệp tiêu đề từ các dự án khác mà trình lập chỉ mục không thể.

  • Vì vậy, bất cứ nơi nào bạn thấy "lỗi nghiêm trọng: file 'somefile.h' không tìm thấy", chắc chắn bạn thêm đường dẫn của tập tin đó đến tài Tiêu đề Search Paths trong cài đặt build của mục tiêu. Cách tốt nhất mà tôi đã tìm thấy để làm điều này là nhấp đúp vào trường để lấy cửa sổ bật lên và kéo thư mục từ trình tìm kiếm vào đó. Điều này thêm một mục mới, nhưng giả sử nó trong cùng một không gian làm việc, nó thêm một đường dẫn tệp tương đối (điều này quan trọng trong trường hợp bạn di chuyển thư mục không gian làm việc của bạn trong tương lai). Nếu bạn có nhiều mục tiêu cho cùng một dự án, bạn có thể đặt đường dẫn tìm kiếm ở dự án thay vì cấp mục tiêu và đặt đường dẫn tìm kiếm mục tiêu thành $ (được kế thừa).

  • Bạn có thể gặp sự cố tương tự với Thư viện hoặc Khung - một lần nữa, hãy cập nhật đường dẫn tìm kiếm thích hợp.

  • Sau khi sửa một số lỗi, hãy đóng Xcode, xóa bảng điều khiển, xóa Dữ liệu gốc của dự án, mở Xcode và để lại chỉ mục.

  • Lặp lại cho đến khi tất cả các lỗi của bạn biến mất.

Một khi bạn đang ở nơi tốt này, mã autocomplete và làm nổi bật cú pháp nên làm việc như một nét duyên dáng :)

+0

bước 1 & 2 đủ tốt cho tôi – Ondrej

+1

chỉ thực hiện bước 2 và nó hoạt động tốt .. cảm ơn –

+0

Bất cứ ai đã bỏ phiếu cho câu trả lời của tôi, hãy cho tôi biết tôi có thể làm gì để cải thiện nó. Cảm ơn. –

0

Bạn có thể khắc phục vấn đề này bằng cách:

  1. Bình luận ra tất cả các mục trong tập tin .pch của dự án (thường là khi bạn làm điều đó, Xcode sẽ đón autocompletion bây giờ)
  2. sạch dự án
  3. Uncommening .pch tập tin trở lại
  4. Xây dựng lại dự án

Bây giờ bạn sẽ có thể để xem đúng cú pháp h ighlighting và tự động hoàn thành phải chính xác.

+0

Tôi đã thử cách này. Nó hoạt động trong một thời gian ngắn, cho đến khi tôi cố chỉnh sửa một trong các tệp tiêu đề, khi đó việc tô sáng tự động hoàn thành và cú pháp sẽ biến mất, để tôi làm sạch lại dự án. Tôi đã cố gắng hoàn nguyên tệp PCH về trạng thái ban đầu nhưng không có kết quả. Tôi cảm thấy cách duy nhất để tiến bộ sẽ là sao chép dự án hoặc bắt đầu từ tươi. –

5

Tuy nhiên xảy ra với tôi thỉnh thoảng trên Xcode 4.3.2,

Tôi chỉ cần làm này:

Xcode > Organiser > Projects > Select your project > Derived Data > Click the delete button

Điều này cũng sẽ xóa chỉ mục. Sau đó tôi thường khởi động lại Xcode và nó bắt đầu lập chỉ mục lại và tôi nhận được cú pháp tô sáng và tự động hoàn thành lại. (Tôi thậm chí không luôn luôn khởi động lại Xcode - nhưng một cái cớ để có một break từ bắt đầu từ một màn hình trong nhiều giờ luôn luôn là một điều tốt cho glazballs của bạn!)

Điều hiếm khi xảy ra, điều này tương đối không đau.

4

Hầu hết thời gian tôi gặp sự cố này khi xóa DerivedData sẽ khắc phục sự cố cho tôi, nhưng có một trường hợp không. Tôi không thể kết nối tệp nguồn mà tôi đã tạo cho bất kỳ mục tiêu cụ thể nào. Khi tôi kết nối nó với một mục tiêu làm nổi bật nguồn bắt đầu làm việc. Nếu các giải pháp khác không hoạt động thì đây có thể là vấn đề của bạn.

+0

Cảm ơn !! Nó hoạt động hoàn hảo! – firewall

+0

Điều này xảy ra khi tôi nhân đôi một lớp hiện có thay vì tạo một lớp mới qua cmd + n – Tim

+0

Related: Mục tiêu cũng cần phải ở trong sơ đồ hoạt động hoặc hoàn thành/đánh dấu sẽ không hoạt động chính xác. – celticminstrel

3

Search for 'GCC_INCREASE_PRECOMPILED_HEADER_SHARING' in build settings and change it to YES. - This worked for me.

GCC_INCREASE_PRECOMPILED_HEADER_SHARING

+0

Đó là vấn đề làm việc cho tôi, xe tăng –

2

của nó thực sự lúng túng. Do nhầm lẫn, tôi đã bỏ dấu chọn trong các tùy chọn XCode Prefernces> Text Editing> Code Cmpletion và tôi đã thử mọi giải pháp có thể có. enter image description here

Vui lòng kiểm tra điều này trước khi đi sâu vào bất kỳ giải pháp nào khác.

+0

Ngay cả khi bị vô hiệu hóa, bạn có thể nhận được hoàn thành bằng cách nhấn Control + Space. – celticminstrel

0

Xóa chỉ dữ liệu nguồn gốc của dự án đó là không là không đủ

tôi đã phải xóa tất cả các dữ liệu nguồn gốc của tất cả các dự án, đã làm một dự án sạch và khởi động lại XCode

tuyệt vời

0

gì Cái quái gì vậy? Tôi đã không nhận được bất kỳ lỗi File not found nào từ trình biên dịch. Đã sửa lỗi một bằng cách xóa một số liên kết tệp bị thiếu từ UnitTestUITestTarget từ Compiler Sources trên Project's Build Phases.

enter image description here

Các vấn đề liên quan