Ориентация / разработка для нескольких мобильных платформ с использованием одного языка программирования (C #)? Стоимость-выгода?

Память, которая не освобождена, когда она больше не необходима, и больше не "достижимо". Например, в неуправляемом коде, если я использую "новый" для инстанцирования объекта, но я не использую, "удаляют", когда я сделан с ним (и мой указатель вышел из объема или чего-то).

лучший способ предотвратить их, вероятно, зависит от того, кого Вы спрашиваете и какой язык Вы используете. Сборка "мусора" является хорошим решением для него, конечно, но могут быть немного служебные связаны с этим, которое не является грандиозным предприятием, если Вы производительность не являетесь своей первоочередной задачей. Сборка "мусора" не может всегда быть доступной, снова, в зависимости от языка, который Вы используете.

, С другой стороны, можно удостовериться, что у Вас есть соответствующее, удаляет и/или деструкторы на месте. Существует много методов и инструментов для обнаружения утечек памяти также, но это будет зависеть от языка и/или IDE, который Вы используете.

24
задан nemke 21 May 2011 в 07:12
поделиться

2 ответа

По моему мнению, большим преимуществом использования единой среды (например, C # /. NET) является переносимость кода. И такие классные вещи, как LINQ, без которых вы не сможете жить. Тем не менее, несколько мобильных ОС (iOS, Android, WP7) довольно сильно отличаются от интерфейса пользователя.

И, если я не ошибаюсь в вашем приложении, оно получает значительную долю взаимодействий с пользовательским интерфейсом, если оно запускается на мобильном устройстве. Большинство мобильных приложений - это 80% кода пользовательского интерфейса.

Таким образом, вы все равно будете писать отдельный набор кода пользовательского интерфейса для каждой платформы - например, вы будете писать в Silverlight WP7 (и во всем доброте WPF), вы будете писать совершенно разные набор кода для iOS в Какао (IB, Views, контроллеры и прочее), вы будете писать совершенно другой набор кода для Android.

Мой опыт всегда заключался в том, что для написания хорошего кода пользовательского интерфейса на любой платформе требуется большой опыт, например изучение WPF / SL - это уже кошмар, бросить в Cocoa Touch и весь беспорядок в Android. Конечно, вы можете написать три набора пользовательского интерфейса, которые выглядят и чувствуют себя достаточно схожими, но есть вероятность, что вы будете изо всех сил пытаться повторно использовать код и иметь общие структуры данных, что ваш пользовательский интерфейс окажется на уровне ниже по сравнению с выделенными приложениями - - и в этом современном мире мобильных приложений современный пользовательский интерфейс не супер (не говоря уже о подпункте) означает смерть для вашего приложения.

Кроме того, все три мобильных среды имеют разные парадигмы подключения, а также мультимедийные парадигмы. Вы заканчиваете тем, что пишете три версии, и изучаете три среды, хотя пишете на одном языке, с которым вы знакомы.

Самое большее, что вы собираетесь использовать, это внутренние модули. Механизмы принятия решений, процедуры поиска, управление данными и т. Д. И даже это будет проблематичным, поскольку вам придется идти на компромиссы в своих структурах данных, чтобы обеспечить простую интеграцию с тремя различными наборами кода пользовательского интерфейса, работающими над тремя различными парадигмами пользовательского интерфейса. , Например, используете ли вы DependencyObjects для использования для привязки к представлениям Silverlight в модели MVVM? Если вы это сделаете, он не будет работать с моделью Какао MVC, и вам придется кодировать эти привязки отдельно.

И поскольку не все мобильные среды позволяют использовать полный набор функций - например, MonoTouch для iOS не имеет общих конструкций, которые нельзя определить во время компиляции. По сути, вы используете очень маленькое подмножество .NET (и должны постоянно напоминать себе, какие функции можно использовать где), чтобы вы могли запускать их все на трех разных платформах без существенных изменений.

Теперь образ, имеющий все эти ограничения, когда вы пишете для платформы WP7, которая поддерживает весь набор функций .NET. Я не знаю о вас, но я сойду с ума. И ваше приложение WP7 никогда не будет даже близко к конкуренции с другими приложениями.

На мой взгляд, боль и компромиссы не стоят того. В итоге вы получите три приложения, которые не понравятся людям ни на одной из платформ.

Если не все хорошее заключается в логике вашего приложения, и это так хорошо, что люди будут игнорировать проблемы пользовательского интерфейса, просто чтобы получить доступ к функциональным возможностям вашего приложения. По моему опыту, это почти никогда не происходит.

19
ответ дан 29 November 2019 в 00:16
поделиться

С тех пор, как принятый ответ был написан в 2011 году, появилась пара различных сред, которые переносят шаблоны MVC и MVVM в Mono для Android и MonoTouch, что очень помогает при разработке приложений для этих приложений. мишени.

Для MVC проверьте проект под названием MonoCross

Для MVVM посмотрите Stuart Lodge MvvmCross

Последний содержит много кода для открытия изображений на трех платформах, составления электронных писем, открытия веб-браузеров, воспроизведения звуков и многого другого. Он также обрабатывает навигацию между моделями просмотра.

2
ответ дан 29 November 2019 в 00:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: