Первое использование MonoTouch IDisposable идентично Mono или .NET. То, что вы читаете по этому вопросу в другом месте, на stackoverflow или на MSDN ..., будет применяться здесь.
Что важно для MonoTouch, так это помнить, что NSObject
реализует IDisposable
, что имеет большой смысл, поскольку представляет собственный объект. Это означает, что все, что наследуется от NSObject
, довольно большой части monotouch.dll , реализует IDisposable
.
- Какой тип элементов я должен выпустить в дополнение к изображениям?
Большинство управляемых Экземпляры объектов на основе NSObject имеют небольшие размеры, но они могут представлять большие собственные объекты ( GC будет знать только о первом управляемом размере ).
Так что лучше всего избавляться от экземпляров на основе NSObject, например, когда это возможно. когда вы используете их в качестве локальных переменных. Шаблон using
позволяет легко сделать это в C #.
OTOH, используйте ваше суждение, маленький NSString
не займет много памяти, в то время как другие могут быть большими (или неизвестными, например, NSString GetWebPageContent (NSUrl)
.
- Нужно ли вызывать метод Dispose из экземпляра класса MyViewController (myViewController.Dispose ()) или метод Dispose вызывается автоматически, как метод dealloc?
Часть шаблона Dispose
гарантирует, что финализатор вызовет Dispose
, если он не был вызван ранее. Таким образом, GC , в конечном счете, освободит память (как управляемую, так и неуправляемую / собственную), связанную с этими экземплярами.
Возможно, вы захотите использовать некоторые инструменты, такие как Жандарм (который будет работать на OSX) или FxCop (только для Windows), который сообщит вам (например), если некоторые из ваших типов имеют поля IDisposable которые не расположены должным образом.
Отказ от ответственности : я поддерживаю Жандарма: -)