Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.08.2010, 16:36
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 1  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Хм.. я вообще про то, что CASALib в принципе не может удалять все ссылки, до тех пор пока объект не IDestroyable.
__________________
...вселенская грусть

Старый 24.08.2010, 16:48
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 2  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
если просто null-нуть ссылки на оба экземпляра (в любом порядке) — все исчезает по GC.
__________________
Поймай яблоко 2!

Старый 24.08.2010, 16:49
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 3  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
Хм.. я вообще про то, что CASALib в принципе не может удалять все ссылки, до тех пор пока объект не IDestroyable.
Не понимаю чего так расхваливать CASALib. От того, что мы создали объект и имлементили ему касалибовский IDestroyable, ссылки чудеснейшим образом не станут удаляться сами по себе. Точно также, ручками, нужно будет прописать в destroy методе, что мы собственно зануляем и уничтожаем.
С тем же успехом можно свой IDestroyable написать и смысл не изменится.
Буди что со экранными объектами автоматизировано их рекурсивное удаление из дисплейлиста и вызов в каждом destroy - так тоже, писать метод 5 минут. Но все остальные переменные класса все равно ручками занулять в destroy нужно.

Старый 24.08.2010, 16:54
bebop вне форума Посмотреть профиль Отправить личное сообщение для bebop Найти все сообщения от bebop
  № 4  
Ответить с цитированием
bebop
 
Аватар для bebop

Регистрация: Dec 2006
Адрес: Novosibirsk
Сообщений: 93
Цитата:
Сообщение от i.o. Посмотреть сообщение
Не понимаю чего так расхваливать CASALib. От того, что мы создали объект и имлементили ему касалибовский IDestroyable, ссылки чудеснейшим образом не станут удаляться сами по себе. Точно также, ручками, нужно будет прописать в destroy методе, что мы собственно зануляем и уничтожаем.
С тем же успехом можно свой IDestroyable написать и смысл не изменится.
Буди что со экранными объектами автоматизировано их рекурсивное удаление из дисплейлиста и вызов в каждом destroy - так тоже, писать метод 5 минут. Но все остальные переменные класса все равно ручками занулять в destroy нужно.
Destroyable отписывается от событий DestroyableEventDispatcher после вызова destroy. Или это тоже 5 минут писать?

Старый 24.08.2010, 16:58
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 5  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Вообще то да)

Старый 24.08.2010, 17:02
bebop вне форума Посмотреть профиль Отправить личное сообщение для bebop Найти все сообщения от bebop
  № 6  
Ответить с цитированием
bebop
 
Аватар для bebop

Регистрация: Dec 2006
Адрес: Novosibirsk
Сообщений: 93
ну значит никаких проблем

Старый 24.08.2010, 18:08
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 7  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Не понимаю чего так расхваливать CASALib
Я и не хотел этого. Более того, прекрасно обхожусь без нее и ей подобных библиотек, ибо при нормальном подходе польза от нее сомнительная

Цитата:
Но все остальные переменные класса все равно ручками занулять в destroy нужно
Не обязательно. Как уже заметил Zebestov - если нет ссылки на сам объект, то нет и ссылок на его свойства.
__________________
...вселенская грусть

Старый 24.08.2010, 18:18
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 8  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Глум, я написал ведь. Если 2 объекта очень "сцепленны" может быть ситуация, в которой GC будет думать что ссылки на них остались.
Хотя, эту статью где про это рассказывалось читал очень давно. Может, сейчас дела обстоят лучше.

Старый 24.08.2010, 18:26
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 9  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Psycho Tiger, только что проверил.

Немного измененный пример gloomyBrain:

Код AS3:
package {
 
	/**
	 * ...
	 * @author gloomyBrain
	 * @mail CartoonRaccoon@gmail.com
	 */
 
	public class LinkHolder {
 
		private var _link:Object;
 
		public function LinkHolder() {
 
 
		}
 
		public function set link(link:Object):void
		{
			this._link = link;
		}
 
		public function get link():Object {
			return this._link;
		}
 
	}
 
}
при "перекрестном использовании":

Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite 
	{
		private var a:LinkHolder;
		private var b:LinkHolder;
 
		public function Main():void 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
 
			this.a = new LinkHolder();
			this.b = new LinkHolder();
 
			this.a.link = this.b;
			this.b.link = this.a;
 
			stage.addEventListener(MouseEvent.CLICK, this.onClickHandler);
		}
 
		private function onClickHandler(e:MouseEvent):void
		{
			this.a = null;
			this.b = null;
			// запускаем GC и наблюдаем исчезновение
			// обоих экземпляров LinkHolder
		}
 
	}
 
}
не вызывает "зависания" экземпляров — GC разобрался =)
__________________
Поймай яблоко 2!

Старый 24.08.2010, 18:47
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 10  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Нет, суть не в этом. Я очень упрощенно сказал, на самом деле ссылок должно быть очень много друг-на друга и желательно больше, чем в 2 объектах. То есть 5 связанных классов, каждый с которым связан, причем больше, чем одной ссылкой.

Короче, ужасный код должен быть)

Создать новую тему Ответ Часовой пояс GMT +4, время: 04:41.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 04:41.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.