Xcode: Що таке ціль і схема простою мовою?


204

Так, заголовок говорить так :-) Що вони означають простою англійською мовою? Я дійсно не розумію пояснення на веб-сайті Apple, і мені потрібно перейменувати свою ціль, і я боюся, що після цього нічого не працює.



варто прочитати blog.just2us.com/2009/07/…
andilabs

Відповіді:


309

Я також додав у Workspace і Project!

  • Робоча область - містить один або кілька проектів . Ці проекти зазвичай стосуються один одного
  • Проект - містить код і ресурси тощо (ви будете звикли до них!)
  • Завдання - кожен проект має одну або кілька цілей.
    • Кожна ціль визначає список параметрів збірки для цього проекту
    • Кожна ціль також визначає список класів, ресурсів, користувацьких сценаріїв тощо, які потрібно включати / використовувати під час створення.
    • Цілі зазвичай використовуються для різних розповсюджень одного проекту.
      • Наприклад, мій проект має дві цілі: "нормальну" збірку і "офісну" збірку, яка має додаткові функції тестування і може містити кілька фонових музичних треків та кнопку змінити трек (як це робиться в даний час).
      • Ви будете використані для додавання класів та ресурсів до цілі за замовчуванням під час їх додавання.
      • Ви можете вибрати та вибрати, які класи / ресурси додаватимуть до якої мети.
        • У своєму прикладі я маю клас "DebugHandler", який додається до моєї офісної збірки
      • Якщо ви додаєте тести, це також додасть нову ціль.
  • Схема - Схема визначає, що відбувається, коли ви натискаєте "Збірка", "Тест", "Профіль" тощо.
    • Зазвичай кожна ціль має принаймні одну схему
    • Ви можете автоматично створити схеми для своїх цілей, перейшовши до схеми> керувати схемами та натиснути "Автоматично створити схеми зараз"

Давайте спробуємо, чи правильно я зрозумів ... Я програмую додаток і складаю дві цілі. Той, який я завантажую в магазин додатків, і той, в якому я розробляю вже наступну версію цього ж додатка. І в схемах я роблю, наприклад, одну схему в обох цілях для запуску і одну схему для налагодження? Але навіщо мені для цього потрібні різні схеми? Я не зрозумів переваги
БДЖ

FWIW, я не використовую різні схеми для випуску та налагодження, якщо я не додаю додаткові функції налагодження, як я описав у своїй відповіді.
Джеймс Вебстер

2
Чудове пояснення брато! ! !
Сагар Калатіл

6
що ви маєте на увазі, що у вашому офісі внизу є кнопка музики. Чи має ваш фактичний додаток додатковий код, який активується лише в офісній збірці, або музика звучить на вашому комп'ютері. Вибачте, що я розгублений
3366784,

Цей вид визначає, які речі складають кожну концепцію, але не призначення кожного елемента. Мені це те, про що просив ОП.
O'Rooney

66

Метою є кінцевим продуктом , створений шляхом запуску «збирання» в Xcode. Це може бути додаток, або рамка, або статична бібліотека, або одиничний тестовий пакет. Як би там не було, воно, як правило, відповідає одному елементу в папці "вбудовані продукти".

Схема являє собою сукупність цілей , які ви працюєте з разом. Він визначає, які цілі використовуються, коли ви вибираєте різні дії в Xcode (Run, Test, Profile тощо). Часто у вас буде лише одна схема, яка використовує основну ціль програми для дій Run, Archive та Profile, а також одиниця тесту для дії тесту. Якщо ви будували два пов’язані програми, у вас можуть бути дві схеми, які використовували один і той самий тестовий пакет, але різні цілі додатків.

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


61

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

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

введіть тут опис зображення

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


7
Ця діаграма здається неправильною. Схема повинна бути прив’язана до певної цілі, я не бачу, де в межах схеми ви можете мати кілька цілей.
Бун

6
@Boon Ні, недбалоChoosy правильний. У редакторі схем натисніть на елемент «побудувати» зліва. У правій частині натисніть "+", і ви можете додати більше цілей до цієї схеми. Поставте галочки за бажанням. Виконані ці цілі потім доступні в інших діях (Run, Profile тощо) у спадному меню, що виконується.
окулус

Це добре, але в ньому відсутня частина конфігураційної схеми побудови. Я розглядаю схему як сукупність того, як дії (Run, Test, Profile) збігаються з комбінацією цілей і будують конфігурації (налагодження, випуск, qa, prod тощо).
Стів Мозер

3

Workspace( .xcworkspace) - є контейнером з кількох projects. Він був створений як наступний крок cross-project references[Про]

  • Workspaceмістить все schemesз включеногоprojects
  • Workspaceобробляє все implicit dependencies[Про]

Спостереження:

  • Безпечно працювати з різними проектами всередині одного workspaceі того ж і не ловитиCouldn't load Project.xcodeproj because it is already opened from another project or workspace
  • Cocoapods[Про] роботу з тим,workspaceде створюється Podsпроект

Project( .xcodeproj) - Це контейнер для targetsі scheme. Він визначає файли коду, ресурси ...

Target- PBXNativeTargetрозділ. Визначає певний набір параметрів збірки, які генерують:

  • Application target
  • Library and framework targets
  • Test
  • Aggregate[Про] . Наприклад, він використовується для створенняUniversal frameworkабоUmbrella framework

Scheme- Project'sконфігурація для дії в Xcode: запуск , тест , профіль , аналіз та архівування . Schemaможна поділитися, що допоможе вам в CI, Carthage...

<project_path>/<project_name>.xcodeproj/xcshareddata/xcschemes

Dependency- Targetsможе мати dependencies. Залежність є джерелом зв’язку проти. Ці залежності можуть бути пов'язані статично чи динамічно [Про] Є два типи:

  • Explicit Dependency[About] - вихідний код залежності, який знаходиться в тому ж проекті або вкладеному проекті
  • Implicit Dependency[About] - вихідний / закритий код залежності, який знаходиться в проекті, що є частиною того ж робочого простору.

[Лексика]

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