ARC — это технология, которая применяется к исходному коду, скомпилированному компилятором Objective-C, и приводит к тому, что каждое присваивание выполняется следующим образом:
foo = bar
Где «foo» и «bar» являются NSObjects в следующем коде:
if (foo != null)
[foo release];
if (bar != null)
[bar retain]
foo = bar;
Как вы можете видеть, это просто трюк компилятора, который переписывает ваш код, чтобы вы не забывали сохранять/освобождать вещи и применимы только к Objective-C.
То, что используют библиотеки Objective-C (ARC или нет), на самом деле не важно для MonoTouch, поскольку они используют существующий задокументированный протокол для того, когда сохранять и когда выпускать. MonoTouch просто следует этим правилам.
Объекты C# не имеют пути кода сохранения/освобождения, вместо этого они просто используют сборщик мусора, чтобы определить, какие объекты активны.
Когда объекты Objective-C отображаются в мире C#, Monotouch берет ссылку (она вызывает сохранение). Когда сборщик мусора MonoTouch определяет, что объект больше не доступен никакому управляемому коду, сборщик мусора вызывает освобождение объекта.
person
miguel.de.icaza
schedule
05.08.2013