Сенс коду Xcode 4 не працює


77

Я запускаю "старий" проект Xcode 3 у Xcode 4, і сенс коду не працює для моїх власних класів. Я спробував наступне:

  • Очистити / відновити
  • Видалити похідні дані
  • Встановлення документації 4.3
  • Перезапустіть

Без удачі.

Іноді сенс коду працює, але в основному я просто отримую "Без завершень".


1
Ви встановили оновлення до 4.0.1, яке було випущено вчора? З Fixed a bug that prevented indexing of some projectsприміток до випуску звучить так, ніби це могло бути пов’язано з вашою проблемою.
Маттіас Баух,

Встановив 4.0.1, видалив старий індекс (похідні дані), очистив, відновив, на жаль, все те саме. Я думаю, що проблема пов’язана з оновленням старого проекту 3, у мене є кілька нових проектів, створених у xcode 4, і вони, здається, працюють.
Окку

Просто для оновлення, сьогодні все, здається, працює набагато краще. Можливо, оновлення 4.0.1 все-таки зробило трюк.
Окку

На жаль, це починає бути фарсом, сенс коду xcode працює не так, як очікувалося.
Окку,

У мене точно така ж проблема. 3.2 проект в XC4. 4.0.1 не виправив. Також спробував усі інші варіанти швидкого виправлення (очистити, видалити похідні дані, встановити документи тощо) безрезультатно. На жаль, на даний момент єдиним варіантом є створення нового проекту в XC4 та копіювання всіх файлів - велика
суєта

Відповіді:


128

Спробуйте це:

Відкрийте Органайзер, а потім вкладку Проект.

Очистіть "Виведені дані". Тоді Xcode повинен переіндексувати ваш проект, і сенс коду повинен працювати. Принаймні працював у мене.


2
Я спробував це, і це не допомогло (як я вже говорив у своєму питанні). У мене більше немає цієї проблеми, оскільки я більше не використовую xcode, я перейшов на код програми.
Окку

5
Це вирішило проблему для мене. Остання версія Xcode 4.3.1 (4E1019). Дякую.
Елліот,

2
Це не вирішило моєї проблеми, подивіться на рішення @Chris для цього питання, гарне рішення
Радж,

@Saikat, це мені допомагає. Дякую!
alloc_iNit

108

Я знаю, що це пізно, але для довідки: http://sealedabstract.com/code/when-xcode-4s-code-completion-autocomplete-breaks/

  • Закрийте проект, залишивши XCode все ще запущеним.

  • Відкрийте вікно Організатора XCode, перейдіть на вкладку Проекти, виберіть правильний проект і натисніть кнопку Видалити поруч із написом «Виведені дані».

  • Закрийте XCode.

  • Перейдіть до файлу .xcodeproject вашого проекту у Finder. Клацніть правою кнопкою миші та виберіть «Показати вміст пакету».

  • Залиште файл project.pbxproj, але видаліть файл project.xcworkspace, будь-які .pbxuser файли та всю папку userdata.

  • Відкрийте проект у XCode. Ви побачите, що XCode працює на високому рівні використання процесора приблизно 10-60 секунд, залежно від розміру вашого проекту. У вікні активності буде написано “Індексування”

  • Коли спайк вашого процесора повернеться на землю, завершення коду буде працювати знову.

Там відбувається багато видалень, тому будьте обережні, але це, безумовно, спрацювало для мене.


3
Дякую за посилання. Для чого це варто, я виявив, що мені не потрібно було явно видаляти будь-які файли, щоб отримати сенс коду, що працює в Xcode 4.2.1; видалення "Виведених даних" через вікно Організатора (тобто перших трьох маркерів) було достатньо. Дякую.
PixelCloud,

Це спрацювало для мене, але, як примітка, спробуйте відкрити вікно Організатора та очистити DerivedData та спочатку вийти та знову відкрити Xcode, перш ніж видаляти будь-які інші файли.
кортики

2
Видалення відповідних файлів із набору .xcoeproject закінчило мої страждання.
Лукаш

Видалення "Виведених даних" більшість часу вирішує проблему для мене, але +1 за надання чистого посібника для всіх випадків!
MechEthan

1
очищення похідних даних не зробило цього, але видалення файлів, запропонованих у .xcodeproject, спрацювало. Дай п'ять!
Brenden

26

Я робив це, і це працювало кілька разів для мене (після того, як спробувати все вищезазначене раніше).

Редагувати: Зараз я просто натискаю пробіл, зворотний простір (версія Mac) і відновлюю ... працює добре. Потім не забудьте прокрутити (іноді кольори не відображаються, поки ви десь не прокрутите)

  1. Знайдіть файл префіксу: "ProjectName_prefix.pch".
  2. Прокоментуйте якийсь рядок. (в основному змінити)
  3. Створіть свій проект, неважливо, він не вдасться чи ні.
  4. Розкоментуйте це.
  5. Знову будуйте.

Я роблю ставку лише на крок 2 (змінити префікс) - це те, що робить це, але це, по суті, повертає вас до роботи. Раптом все чарівним чином перефарбовується і виконує функції.

Удачі, якщо це не виправить, можливо, спробуйте зробити це для своїх файлів залежності pch (three20 або FB api)


Чи включені вони за замовчуванням? Я використовую xocde 5 і не можу його знайти.
Брен

Так, це те ж саме спрацювало у мене. Все ще відбувається навіть у Xcode 6
Beau Nouvelle

Мій Xcode втрачає сенс, коли я переходжу на „пристрій iOS“ замість симулятора. Жодне обчислення похідних даних не працювало. Я спробував цей метод без жодної надії, і він спрацював!
entonio

Файли @Bren PCH за замовчуванням трохи не були в XCode.
Stephen J

5

Очищення "Виведених даних" для мене працює лише тимчасово. Я повинен це зробити, а потім перезапустити Xcode, як 3-4 рази на день, щоб змусити код знову працювати.

Я дізнався, що справжня причина полягає в налаштуваннях збірки Target . Я перемістив все із шляхів пошуку заголовків до шляхів пошуку заголовків користувача, і це виправлено. У моєму випадку фреймворком, з яким я працюю, є RestKit.

До речі, я це придумав, оскільки додав до свого проекту інший проект ( QuickDialog ), і мені було цікаво, що він використовує шляхи пошуку заголовок користувача , але не шляхи пошуку заголовків . Ось різниця між ними.


Ага! Я використовую RestKit і маю лише проблеми з цим. Я ще раз перевірю, чи це проблема, і повідомляю тут.
makdad

ні. Я думав, що це ... це, здається, допомогло, але ні, я відчуваю, що я просто менше видаляю похідні дані.
makdad

Мені також довелося видалити похідні дані ще пару разів після цього для різних збірок. Після цього мені більше ніколи не доводиться це робити. Але так, я все ще не знаю, як це працює ...
Хлунг,

Здавалося, це спрацювало для мене. Я використовую статичну бібліотеку, і це
самозавершення збило

4

Ви можете вирішити цю проблему, змінивши такі налаштування збірки, як PreCompile Prefix Headers: NO


3

FYI, якщо один файл не має сенсу коду, але решта вашого проекту має, перевірте, чи його додано до цілі. Як тільки я це зробив, я отримав сенс коду у цьому файлі.


1
Також видаліть будь-який блок коментарів під словом @end. Це була проблема для мене.
GeneCode

2

Це було століття, але відповідь полягає лише в тому, щоб перенести код в нову папку, і сенс коду повинен працювати зараз.

Це сталося, коли я додав новий клас Objective-C, і сенс коду не працює лише у нещодавно доданих файлах .m та .h (в останньому оновленні XCode 4 під час цієї публікації).


2

Закрийте всі вікна xcode

Видаліть усі свої проекти з xcode> window> organizer і перезапустіть проект. Тепер він буде правильно розуміти та індексувати ваш проект.


1

Про це я детально писав тут .

В основному моє виправлення було те, що з локалізацією. Я перейшов з xcode 3.2.5 на xcode 4, а потім перекрутив за допомогою вбудованого конструктора інтерфейсів і випадково ввімкнув локалізацію для XIB-файлу, який помістив мої вихідні файли в каталог en.lproj. Після переміщення їх назад у папку Classes це спрацювало ідеально.


Танки, але це не відповідає моїй проблемі, у мене проблеми з усіма моїми класами, і ні, у мене немає джерел у локалізованому каталозі.
Окку,

ви пробували оновити до xcode 4.0.2. Я думаю, це набагато стабільніше
zakishaheen

0

Знову ж таки, заради допомоги іншим у вирішенні цієї проблеми, яка, у моєму випадку, сталася під час оновлення до Xcode 4.3.

Звичайно, я спробував рішення, запропоновані в цій публікації, і жодне з них не спрацювало. Але пропозиція перемістити місцезнаходження проекту у Finder повернула деякий код Sense, але пропозиції не мали жодного сенсу.

У підсумку я видалив свій проект і повторно клонував його зі сховища git .


0

Я відкриваю другий проект у фоновому режимі, коли зондування коду мого Xcode перестає працювати (зазвичай це працює при першому відкритті проекту, але через деякий час сенс коду більше не працює). Отже, що я роблю, це відкрити другий проект у Xcode. Xcode почне індексувати другий проект, і магічно зміст коду для мого основного проекту повернувся.

Запуск Xcode 4.3.1 на Lion

Сподіваюся, це комусь допомагає.


0

З цього коментаря тут я зміг налагодити проблему на своєму кінці, здавалося, це був прапор bad-w, який препроцесор clang не розпізнавав належним чином. В основному, біг

defaults write com.apple.dt.Xcode IDEIndexingClangInvocationLogLevel 3

in Terminal збільшує багатослівність індексатора і повинен допомогти вам відстежувати проблеми. Відкрийте Console.app і шукайте повідомлення з Xcode, рядок пошуку IDEIndexingClangInvocationдопоміг мені їх знайти.


0

Для мене це сталося просто тому, що у файлі не було цільового членства. Якщо перші кілька відповідей у ​​вас не спрацювали, перейдіть до свого файлу .m (імовірно, саме з цим файлом у вас виникають проблеми), відкрийте подання Службові програми (Редагувати -> Службові програми -> Показати інспектор файлів) і в розділі "Ціль Членство "перевірте ціль, до якої ви хочете належати цей файл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.