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

Если MyCollection будет, собрал "мусор" так или иначе, то Вы не должны должны быть располагать его. Выполнение так просто взболтает более, чем необходимый ЦП, и может даже делать недействительным некоторый предрасчетный анализ, который уже выполнил сборщик "мусора".

я использую IDisposable, чтобы сделать, вещам нравится, гарантируют, что потоки расположены правильно, наряду с неуправляемыми ресурсами.

РЕДАКТИРОВАНИЕ В ответ на комментарий Scott:

единственное время, метрики производительности GC затронуты, - когда вызов [так] GC.Collect () сделан"

Концептуально, GC поддерживает представление графика ссылки на объект и все ссылки на него от стековых фреймов потоков. Эта "куча" может быть довольно большой и охватить много страниц памяти. Как оптимизация, GC кэширует свой анализ страниц, которые вряд ли изменятся очень часто для предотвращения повторного сканирования страница излишне. GC получает уведомление от ядра, когда данные на странице изменяются, таким образом, это знает, что страница грязна и требует пересканирования. Если набор находится в Gen0 затем, вероятно, что другие вещи на странице изменяются также, но это менее вероятно Gen1 и Gen2. Анекдотическим образом эти рычаги не были доступны в Mac OS X для команды, которая портировала GC к Mac для получения плагина Silverlight, работающего над той платформой.

Другая точка против ненужного избавления от ресурсов: вообразите ситуацию, где процесс разгружается. Предположите также, что процесс работал в течение некоторого времени. Возможности состоят в том, что многие из страниц памяти того процесса были подкачаны к диску. По крайней мере они больше не находятся в L1 или кэше L2. В такой ситуации нет никакого смысла для приложения, которое это разгружает для свопинга всех тех страниц данных и кодовых страниц назад в память для 'высвобождения' средств, которые будут выпущенными операционной системой так или иначе, когда процесс завершается. Это относится к управляемым и даже определенным неуправляемым ресурсам. Только ресурсы, которые поддерживают нефоновые потоки, должны быть расположены, иначе процесс останется живым.

Теперь, во время нормального выполнения существуют эфемерные ресурсы, которые должны быть очищены правильно (как @fezmonkey указывает соединения с базой данных, сокеты, дескрипторы окна ) избегать неуправляемых утечек памяти. Это виды вещей, которые должны быть расположены. Если Вы создаете некоторый класс, который владеет потоком (и владеет, я подразумеваю, что он создал его и поэтому ответственен за обеспечение, он останавливается, по крайней мере, моим стилем кодирования), то тот класс, скорее всего, должен реализовать IDisposable и разъединить поток во время Dispose.

платформа.NET использует эти IDisposable интерфейс как сигнал, даже предупреждение, разработчикам, что этот класс должен быть расположенным. Я не могу думать ни о каких типах в платформе, которые реализуют IDisposable (исключая явные интерфейсные реализации), где распоряжение является дополнительным.

9
задан Peter Hosey 25 August 2009 в 10:41
поделиться

2 ответа

The Info.plist can contain any custom keys. See the docs:

You can include your keys in your bundle’s information property list file if you want all of your keys stored in one place.

I'm doing this for all my projects: I'm using a script to include the svnversion and build date/time in it to identify each build.

I'm using my own namespace (prefixing the keys) to avoid key name clashes.

8
ответ дан 3 November 2019 в 01:02
поделиться

You add them to Info.plist and then access them programmatically.

Using the bundle descriptor plist for your custom attributes isn't dirty, it's almost universal.

3
ответ дан 3 November 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: