Что является целью, “удаляют неиспользованные ссылки”

это потому, что mapviewController все еще существует с аннотациями карты, просто удалите все аннотации, прежде чем переключать ниже необходимый код: -

for (int i =0; i < [mapView.annotations count]; i++) { 
    if ([[mapView.annotations objectAtIndex:i] isKindOfClass:[MyAnnotationClass class]]) {                      
         [mapView removeAnnotation:[mapView.annotations objectAtIndex:i]]; 
       } 
    }
12
задан Cerebrus 8 March 2009 в 08:25
поделиться

4 ответа

Это препятствует тому, чтобы CLR загрузил модуль, на который ссылаются, во времени выполнения. Это уменьшит время запуска (так как оно занимает время для загрузки каждого модуля). В зависимости от размера модуля это могло бы заметно уменьшить время запуска.

Один способ протестировать это состоит в том, чтобы создать тест проект WinForms, добавить ссылку на блок, который не используется (например, Система. Сеть) затем выполненный и присоединение к исполняемому файлу (например, F5). Просмотрите загруженные модули (Отладка-> Windows-> Модули), и Вы будете видеть, что блок, на который ссылаются, был загружен.

Если бы Вы думаете об этом, CLR было бы довольно трудно определить, используется ли зависимость (это находится в декларации как зависимость, после того как Вы добавляете ссылку на него) действительно... Тем более, что выполнение некоторых путей выполнения кода не может быть известно заранее...

14
ответ дан 2 December 2019 в 03:33
поделиться

Visual Studio 2008 также имеет функцию для удаления неиспользованных директив использования.

Удаление неиспользованного кода делает код более опрятным, но можно также снизить риск конфликтов. Иногда существуют классы с тем же именем в различных блоках. Например, существует Image класс оба в System.Drawing и System.Web.UI.WebControls. Если Вы имеете директивы использования для обоих пространств имен и начинаете использовать класс Изображения, компилятор не может сказать который из тех использовать.

8
ответ дан 2 December 2019 в 03:33
поделиться

Кроме исходных файлов, являющихся меньшим, я думаю, что просто лучше иметь чистый исходный файл, который не имеет никакого неиспользованного кода или ссылок.

12
ответ дан 2 December 2019 в 03:33
поделиться

Это - оптимизация для создания компиляции проекта быстрее. Это старается не иметь метаданные загрузки компилятора, которые никогда не будут использоваться. Это - незначительное, хотя, я предположил бы приблизительно 50 мс, в зависимости от скорости Вашего жесткого диска и состояния кэша файловой системы.

Компилятор C# достаточно умен, чтобы только испустить .assembly ссылки в метаданных Вашего скомпилированного блока для блоков, которые на самом деле используются. Таким образом, Вы не генерируете собственные изображения для блоков, Вы не используете при выполнении Ngen.exe. JIT-компилятор не будет затронут так или иначе, он только загружает блоки по мере необходимости для перевода IL.

7
ответ дан 2 December 2019 в 03:33
поделиться