В чем разница между перемещением Xcode в корзину и удалением ссылки?

Когда я хочу удалить файл в Xcode. Что мне выбрать между «переместить в корзину» и «удалить ссылку»?

Я всегда выбираю переместить в корзину, потому что я думал, что он определенно удалит настоящий файл. Но не уверен, что это правда. Так в чем же между ними разница?


person itenyh    schedule 24.05.2012    source источник
comment
FWIW remove to trash также удаляет ссылку ...   -  person Honey    schedule 17.05.2017


Ответы (2)


Xcode хранит ссылки на файлы, составляющие ваш проект, в файле проекта, а именно в файле projectName.xcodeproj. Теоретически исходные файлы и файлы ресурсов, из которых состоит ваш проект, могут быть размещены по всему жесткому диску; конечно, это не очень хорошая практика.
Итак, когда вы добавляете существующий файл в свой проект, Xcode спрашивает, хотите ли вы скопировать его в папку вашего проекта, что обычно и следует делать. Итак, когда вы собираетесь удалить файл, Xcode спросит вас, хотите ли вы удалить только ссылку из вашего проекта (и сохранить файл, где бы он ни находился на вашем диске), или вы хотите удалить файл.

Обычно, если вы отметили «Копировать в проект» при добавлении файла, вы должны выбрать «Переместить в корзину» при удалении, в противном случае выберите «Удалить ссылку». Последний вариант оставит файл на месте и просто удалит ссылку на него.

person DrummerB    schedule 24.05.2012
comment
когда я хочу добавить файл в проект, что означает опция «добавить в цель»? - person itenyh; 24.05.2012
comment
Это означает, что файл должен быть частью выбранной цели. В зависимости от типа файла это имеет разное значение. Если это исходный файл, он будет скомпилирован при построении вашей цели. Если это файл ресурсов (изображение, список ...), он будет скопирован в пакет вашего приложения. В большинстве случаев вы хотите добавить новый файл к своей цели. - person DrummerB; 24.05.2012

Не прямой ответ на этот вопрос, но очень полезно знать. Я создал в своей ветке файл с именем Device.swift и добавил в него код. Затем мой коллега также создал тот же файл Device.swift в своей ветке и слил его до того, как я слил свои изменения.

Что произойдет, так это то, что в моем xcodeproj/project.pbxproj файле было что-то вроде:

5C5809E72257D81500D4CBB2 /* Device.swift in Sources */

В то время как в основной ветке, в которой были его изменения, были:

26E3A7A5226F6E13001B176C /* Device.swift in Sources */

У нас обоих будет Device.swift. Xcode увидит в этом конфликт слияния, поскольку мы оба изменили одну и ту же строку. Если вы просто позволите им быть там обоим, то в вашем Xcode вы, вероятно, дважды увидите Device.swift, и он не будет компилироваться.

Также было бы больше проблем, если бы я добавил Device.swift в / Models / Devices, в то время как он добавил его в / Modell / Gadgets.

Решение. Удалите все ссылки на: 5C5809E72257D81500D4CBB2 / * Device.swift или другой. Я не уверен на 100%, как решить, какой из них следует удалить, поэтому я получил копию своего Device.swift раньше, а затем начал удаление.

А также, если файлы находятся в двух разных каталогах, вам придется вручную удалить один из них. Что бы вы ни предпочли

person Honey    schedule 25.04.2019
comment
Также рекомендую см. это ответ - person Honey; 26.04.2019