Должно ли только что созданное Mac-приложение поддерживать 10.4, и могу ли я поддерживать 10.4 и подготовиться к 64-битной версии? - PullRequest
1 голос
/ 13 ноября 2008

Моя компания находится в процессе переписывания нашего программного обеспечения с нуля, и именно я собираюсь выполнить большую часть работы по переписыванию клиента Mac (ядро нашего программного обеспечения основано на Windows и Mac клиент общается с ним через веб-сервис).

Это не очень тяжелое приложение, в основном, оно выполняет отслеживание фоновой работы и пользовательский интерфейс для ввода информации пользователем.

Я пытаюсь решить, как трудно мне отказаться от поддержки 10.4 и использовать чистый код 10.5 + / Obj-C 2.0.

Мои основные мотивы для этого:

  • Было бы проще написать код, я мог бы использовать все возможности Obj-C 2.0, такие как синтезированные свойства и быстрое перечисление.

  • Это дало бы мне доступ к нескольким классам и методам в существующих классах, которых нет в 10.4 (просто при создании пользовательского интерфейса я встречал NSPathControl и NSTreeNode, оба из которых я бы иначе будь очень рад использовать.

  • Подготовка к переходу на 64-битную версию в Snow Leopard. Похоже, что большинство методов подготовки к переходу на 64-битные (NSInteger и т. Д.) Доступны только в версии 10.5+, и их невозможно было бы использовать при записи для 10.4.

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

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

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

Может быть возможно какое-то гибридное решение, такое как переписывание частей старого клиента для использования нового веб-сервиса или запись клиента в 10.5 и обратная пересылка его в 10.4, если суетится достаточно людей, но, откровенно говоря, они звучат Скорее всего, они доставят еще больше хлопот, чем отказ от функций 10.5 и написание кода в 10.4 для начала.

Итак, я думаю, мои вопросы следующие:

  1. Учитывая вышеприведенную информацию, считаете ли вы правильным обоснование принятия только 10,5+? Есть ли у вас какие-либо предложения относительно того, как это может быть положительно представлено остальной части компании?

  2. Я не знаю так много о предстоящем 64-битном переходе, как хотелось бы. Есть ли у кого-нибудь хорошие отзывы о том, что будет другим, и думаете ли вы, что поддержка только 10.5+ облегчит нам этот переход?

Ответы [ 4 ]

3 голосов
/ 13 ноября 2008

Если бы я делал обновление, я бы нацелился на 10.5, тем более, что 10.6 не за горами, а 10.5 действительно выпустил много замечательных, новых вещей (особенно Objective-c 2.0). Однако я думаю, что вам действительно нужно ответить на этот вопрос, исходя из того, что, по вашему мнению, будет использовать ваша целевая группа клиентов. Если они не спешат внедрять новые технологии, возможно, вам придется поддержать 10.4 или рискнуть потерять часть своей клиентской базы.

С другой стороны, вы можете нацелиться на 10.4 и писать, используя 10.5 SDK. Таким образом, вы можете воспользоваться всеми приготовлениями для 64-битной версии, добавленными в SDK. Вам просто нужно убедиться, что вы не используете какие-либо классы или функции фреймворков, которых не было в 10.4. Вы также можете сделать слабую связь с платформами 10.5 и программно решить, можете ли вы использовать новую функцию или нет (хотя это немного дополнительная работа, вы можете легко отказаться от поддержки 10.4 из своего кода в будущем и полностью преимущество 10,5 улучшений для пользователей, которые на самом деле работают 10,5).

Существует множество блогов и статей о том, как делать кроссплатформенные вещи в Интернете. Еще одна вещь, которую нужно иметь в виду, это то, что если вы делаете целевой 10.4, убедитесь, что у вас есть машина 10.4 для большого количества тестов (особенно если вы компилируете из 10.5 SDK, чтобы воспользоваться преимуществами 64-битных готовых функций). Также проверьте доки для любой функции, которую вы можете использовать из 10.5 SDK. Многие функции были фактически доступны в 10.4, но не документированы, и в новой документации обычно указывается, какие функции вы можете безопасно использовать при развертывании до 10.4

1 голос
/ 13 ноября 2008

Вам действительно необходимо выяснить, что используют ваши клиенты, и, вероятно, лучше всего об этом узнает специалист службы поддержки или менеджер по продукту. Тем не менее, нет ничего плохого в разъяснении технических аргументов сейчас, даже если 90% + вашей пользовательской базы были до Leopard; таким образом, проблемы будут известны (и, мы надеемся, поняты), так что вы получите больше поддержки, когда среда действительно изменится.

1 голос
/ 13 ноября 2008

Вам нужно 64-бит? Если ваше приложение не сильно загружает процессор, это ничего не изменит.

Tiger может запускать 64-битные приложения, но без графического интерфейса. Если вам нужна 64-битная версия, вы можете создать 64-битный исполняемый файл CLI, который выполняет тяжелую работу и предоставляет для него 32-битный конец шрифта (используя NSTask и NSPipe).

Вы также можете иметь отдельные .nib файлы для Леопарда и Тигра:

-(id)init
{
  BOOL tiger = floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_4; 
  NSString nibname = (tiger ? @"WindowTiger" : @"WindowLeopard");
  if (self = [super initWithWindowNibName:nibname]) 
  …
0 голосов
/ 13 ноября 2008

Я никогда не писал рабочий код на Objective-C, и его трудно поддерживать, но насколько я знаю, NSInteger и его друзья находятся в 10.4, просто Какао не 64-битный в 10.4, тогда как в 10.5 большая его часть (так что больше нет необходимости в отдельном 64-битном рабочем процессе под 32-битным интерфейсом).

Я не знаю, каков ваш продукт или кто ваши клиенты, но по моему опыту пользователи Mac являются первыми пользователями (условно говоря). Я никогда не использовал версию OS X дольше, чем за две недели до следующего обновления был вне, и в моем кругу я поздний усыновитель. Конечно, я не просто пользователь Mac для бизнеса, и это может иметь большое значение.

Что делает 64-битное требование в вашем коде? Нет особой причины не компилировать универсальный двоичный файл, содержащий столько архитектур, сколько вы хотели бы, чтобы у вас не было проблем с одним двоичным прогоном на G4, G5, IA32 и IA64, и он должен быть встроенным для всех них. Если вы просто делаете 64 бита, потому что вы можете, нет никакой причины (которую я могу себе представить) не продолжать поддерживать 32 бита, но если вам нужны такие вещи, как CoreAnimation, у вас нет большого выбора.

Я не думаю, что неправильно требовать 10,5 для новой разработки, но не имеет большого смысла с коммерческой точки зрения навязывать покупателям совершенно новую ОС только для того, чтобы продолжать использовать существующий продукт. Так что, если вы можете, оставайтесь совместимыми, возможно, сделайте бэкап своих новых функций / патчей на некоторое время. Для контроля версий есть веская причина, и это может быть так.

Edit-

С тех пор как я опубликовал это, я узнал, что был неправ, и NSInteger не существовал до 10.5. Я думаю, что слишком много предполагал, что раньше использовал подобные типы (например, NSDecimal).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...