(Я не положителен в этом, но...)
, AS3 использует недетерминированную сборку "мусора". Что означает, что не имеющая ссылки память будет освобождена каждый раз, когда время выполнения чувствует себя подобно ему (обычно не, если нет причина работать, так как это - дорогая операция для выполнения). Это - тот же подход, используемый самыми современными собравшими "мусор" языками (как C# и Java также).
Принятие там не является никакими другими ссылками на память, на которую указывают byteArray
или объекты в самом массиве, память будет освобождена в какой-то момент после выхода из объема, где byteArray
объявляется.
можно вызвать сборку "мусора", хотя Вы действительно не были должны. Если Вы сделаете, сделайте это только для тестирования..., если Вы сделаете это в производстве, Вы повредите производительность намного больше, чем справка это.
Для принуждения GC попробуйте (да, дважды):
flash.system.System.gc();
flash.system.System.gc();
Интерфейс определяет контракт между объектом и клиентами, которые вызывают его членов. К закрытому методу не могут получить доступ никакие другие объекты, поэтому нет смысла добавлять его в интерфейс. По этой причине все члены интерфейса считаются общедоступными.
Вы может фактически сделать метод закрытым в реализующем классе, если вы сделаете явную реализацию интерфейса:
public interface IMyInterface
{
bool GetMyInfo(string request);
}
public class MyClass : IMyInterface
{
public void SomePublicMethod() { }
bool IMyInterface.GetMyInfo(string request)
{
// implementation goes here
}
}
Этот подход означает, что GetMyInfo
не будет частью открытого интерфейса MyClass
. Доступ к нему можно получить, только преобразовав экземпляр MyClass
в IMyInterface
:
MyClass instance = new MyClass();
// this does not compile
bool result = instance.GetMyInfo("some request");
// this works well on the other hand
bool result = ((IMyInterface)instance).GetMyInfo("some request");
Таким образом, в контексте интерфейса все его члены будут общедоступными. Их можно скрыть от открытого интерфейса реализующего класса, но всегда есть возможность сделать приведение типа к экземпляру и таким образом получить доступ к членам.
В терминах объектно-ориентированной инкапсуляции все сводится к сокрытию данных. Это означает, что все, что происходит внутри класса, зависит от его реализации. Это означает, что было бы бесполезно принудительно применять частные члены по контракту.
Однако причина использования интерфейсов заключается в том, что вы хотите, чтобы класс придерживался определенного контракта и последовательно выставлял несколько открытых членов.
Частное определение в интерфейсе:
Все методы интерфейса должны иметь одинаковый уровень доступа, чтобы вызывающий мог использовать их все. Однако интерфейсы также могут быть внутренними (или частными вложенными интерфейсами).
Если вам нужны разные уровни доступа, используйте отдельный интерфейс.