Сенс коду 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.