Путем я думаю об этой проблеме, то, что в конечном счете Вы пытаетесь оптимизировать свою среднюю скорость от Вашей начальной точки до Вашей конечной точки. В частности, Вы не заботитесь вообще об общем расстоянии, путешествовавшем, если движение [хорошо] из Вашего пути экономит время. Так, базовая деталь пространства решения испытывает необходимость для идентификации эффективных маршрутов, доступных, которые покрывают нетривиальные части общего расстояния в относительно высоких скоростях между запуском и концом.
К Вашей исходной точке, типичные автомобильные алгоритмы маршрута, используемые единицами навигации GPS для совершения поездки на машине, являются пользой, направляющейся в течение целевого оптимального общего времени и оценок оптимального маршрута. Другими словами, Ваше основанное на шине прохождение сделало бы действительно хороший для приближения к основанному на автомобиле решению. Очевидно, шина основанная на маршруте система будет иметь намного больше ограничений, чем основанные на автомобиле решения, но имеет автомобильное решение, поскольку ссылка (время и расстояние) дает алгоритму шины платформу для оптимизации against*. Так, помещенный свободно, Вы хотите превратить автомобильное решение к набору возможных решений для шины повторяющимся способом или возможно более вероятно взять возможные решения для шины и выиграть их против Вашего основанного на автомобиле решения знать, делаете ли Вы "хорошее" или нет.
Создание этого несколько более конкретного, в течение определенного времени отправления там только будут ограниченным количеством шин, доступных в любом разумном сроке, который может покрыть значительный процент Вашего общего расстояния. На основе прямого автомобильного анализа разумный срок и значительный процент расстояния становятся измеримым использованием некоторых мягко субъективных метрик. Конечно, становится легче выиграть каждую возможность относительно другого в более абсолютном смысле.
, После того как у Вас есть ряд возможного главного сегмента (сегментов), доступного как возможные ответы в решении, затем необходимо сцепить их вместе с другими возможными путями обхода и ожидания.... или если достаточно далеко друг от друга рекурсивный выбор дополнительной короткой шины работает. Интуитивно, не кажется, что там действительно будет препятствующим набором выбора здесь из-за эти Ограничения Paradox (см. сноску ниже). Даже если Вы не можете грубая сила все возможные комбинации оттуда, что остается, должен смочь быть оптимизированным с помощью моделируемый отжиг (SA) алгоритм типа. Метод Монте-Карло был бы другой опцией.
способ, которым мы сломали проблему к этой точке, оставляет нас чем-то, что вполне походит, как алгоритмы SA применяются к автоматизированному расположению и маршрутизации микросхем ASIC, FPGA и также размещение и маршрутизация печатных плат, из которых существуют довольно мало опубликованная работа при оптимизации того типа проблемной формы.
* Примечание: Я обычно называю это "Ограничениями Paradox" - мой термин. В то время как люди могут естественно думать о более ограниченных проблемах как тяжелее для решения, ограничения уменьшают выбор, и меньше вариантов значит легче для грубой силы. Когда Вы можете грубая сила, затем даже оптимальное решение доступно.
Change the frame size of viewcontroller.view.frame
, and then add to subview. [viewcontrollerparent.view addSubview:viewcontroller.view]
Этот ответ верен для старых версий iOS, но теперь устарел. Вам следует использовать ответ Микки Дункана, который касается пользовательских контейнеров.
Не делайте этого! Назначение UIViewController
- управлять всем экраном. Это просто не подходит для этого и не добавляет ничего, что вам нужно.
Все, что вам нужно, это объект, которому принадлежит ваше пользовательское представление. Просто используйте подкласс самого UIView
, так что его можно добавить в вашу иерархию окон, а управление памятью будет полностью автоматическим.
Укажите владельцу NIB подсистемы пользовательский подкласс UIView
. Добавьте выход contentView
к этому настраиваемому подклассу и укажите его в представлении внутри пера. В пользовательском подклассе сделайте что-то вроде этого:
- (id)initWithFrame: (CGRect)inFrame;
{
if ( (self = [super initWithFrame: inFrame]) ) {
[[NSBundle mainBundle] loadNibNamed: @"NibNameHere"
owner: self
options: nil];
contentView.size = inFrame.size;
// do extra loading here
[self addSubview: contentView];
}
return self;
}
- (void)dealloc;
{
self.contentView = nil;
// additional release here
[super dealloc];
}
(я предполагаю, что здесь вы используете initWithFrame:
для создания вложенного представления.)