Просмотр полной версии : Обращение к параметрам пра-пра-пра parentов
Exact1990
06.03.2012, 20:12
Можно ли как-то обратиться к параметру класса, расположенного ниже в иерархии отображения? Если неизвестна глубина класса, но известно его имя?
Пример:
Main (параметр par)
- Tip1
-- Tipa
--- Tiprt
- Tip2
-- Tiprt
- Tip3
--Tipb
--- Tipc
---- Tiprt
Нужно, чтобы все экземпляры Tiprt могли использовать main.par
Deimos747
06.03.2012, 20:39
Пересмотрите структуру классов, у вас неправильный подход.
Exact1990
06.03.2012, 20:46
А как нужно подойти? Чтобы Tiprt всегда располагался на одном уровне? Так тогда сильно ухудшится "универсальность" класса и его нельзя уже будет использовать часто, а только лишь там, где позволяет глубина
Если под тридевятый класс я должен заводить паблики в Мейне, слово "универсальность класса" звучит как издевка, уж простите. Универсальность – это когда не надо ехать выкапывать прадедушку чтобы поменять ему ДНК, чтобы собачка его праправнука смогла есть консерву.
Exact1990
06.03.2012, 21:12
Уже не тот раздел, конечно.. Но проблема в том, что этот параметр VK: ApiConnection... И он работает почему-то только в одном классе, вожусь уже кучу времени(
http://www.flasher.ru/forum/showthread.php?p=1060964#post1060964
Вы пытаетесь сделать солдата "универсальным", таким чтобы его можно было кинуть в любой окоп/вертолет и он "все правильно сделал" за счет того, что перед каждым выстрелом звонит в Генштаб согласовать свои действия. Потому как он "универсальный" и ему не надо знать своего командира. Обычно эти фильмы заканчиваются дулом у виска генералиссимуса. И крахом проекта до полной переписки.
Добавлено через 4 минуты
Почему, с какой стати некий класс ВДРУГ захотел узнать нечто глобальное?
Ему приказали что-то сделать? Почему тогда в приказе не передали все необходимые инструкции?
Где находится логика? Кто принимает решения и отдает команды? Он же и обязан располагать всеми необходимыми данными и сообщать подчиненным все что им нужно для выполнения распоряжения.
Exact1990
06.03.2012, 21:21
Wolsh хорошо, согласен, что всё это глупо, но я уже не знаю, как иначе получить APIConnection рабочий :(
Обычно вопрос передачи подобных вещей решается одним из трех путей
1. передать ссылку на необходимый параметр в конструкторе на хранение ( не всегда представляется возможным или удобным или вменяемым для сборщика мусора)
2. Передать ссылку на необходимый параметр при вызове конкретного метода ( не всегда получается красиво, особенно если это слушатель )
3. Ссылки на общие глобальные данные хранятся в публичных свойствах статического класса, к коим имеют доступ все заинтересованные классы.
А "Универсальный солдат" подучающий задания из генштаба вполне себе имеет право на жизнь. Только он не сам должен за заданиями ходить а получать пакеты с инструкциями. Тогда и универсальность можно соблюсти и генерала ему в генштабе в любой момент сменить.
Обычно вопрос передачи подобных вещей решается одним из трех путей
1. передать ссылку на необходимый параметр в конструкторе на хранение ( не всегда представляется возможным или удобным или вменяемым для сборщика мусора)
2. Передать ссылку на необходимый параметр при вызове конкретного метода ( не всегда получается красиво, особенно если это слушатель )
3. Ссылки на общие глобальные данные хранятся в публичных свойствах статического класса, к коим имеют доступ все заинтересованные классы.
1, 2 и 3 ничем для сборщика не отличаются, поэтому зря вы за него заговорили.
Способ 1 обычно подразумевает хранение ссылки внутри класса. Если класс не DisplayObject И при этом долгоживущий, могут быть нюансы, для новичка неочевидные. Почему этого GC не зачистил мой спрайт :)
В принципе любая реализация от этого не застрахована. Но тут вероятность граблей на мой взгляд выше.
А так да. При грамотном использовании разницы для GC нет никакой.
PS Мне вообще работа GC в во флеш плеере нравится. По сравнению с реализацией GC в PHP это вообще космический корабль. Хотя все же на мой взгляд зря деструкторов нет.
Ну хорошо, чем ссылка, переданная через конструктор отличается от ссылок, полученных другим путем?
dimarik, там было еще важное слово "на хранение", то есть ссылка, полученная конструктором, и сохраненная в приватной переменной. Ссылка, переданная в метод (или конструктор), но не сохраненная, будет "стерта из памяти" как любая локальная переменная, по завершении метода. Разве для GC здесь нет разницы?
Exact1990
07.03.2012, 11:27
Ссылки на общие глобальные данные хранятся в публичных свойствах статического класса, к коим имеют доступ все заинтересованные классы.
А можно поподробнее об этом? Как создать такой класс? Просто со static? Как к нему обращаться? Или где можно про это почитать? А то про статические методы и параметр читал, а вот чтобы весь класс был статическим...
Почитал тут: http://www.flasher.ru/forum/showthread.php?t=142177
Буду пробовать...
Как-то вот так приблизительно:
public class MyStorage
{
public static var ApplicationTitle: String = '';
};
И обращаться потом в любом месте, где хочется:
MyStorage.ApplicationTitle = 'Моя самая крутая программа';
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.