GNUstep будет поддерживать @property и @synthesize?

Выполнение Вокруг идиомы используется, когда Вы имеете необходимость, чтобы сделать что-то вроде этого:

//... chunk of init/preparation code ...
task A
//... chunk of cleanup/finishing code ...

//... chunk of identical init/preparation code ...
task B
//... chunk of identical cleanup/finishing code ...

//... chunk of identical init/preparation code ...
task C
//... chunk of identical cleanup/finishing code ...

//... and so on.

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

//pseudo-code:
class DoTask()
{
    do(task T)
    {
        // .. chunk of prep code
        // execute task T
        // .. chunk of cleanup code
    }
};

DoTask.do(task A)
DoTask.do(task B)
DoTask.do(task C)

Эта идиома перемещает весь сложный избыточный код в одно место и оставляет Вашу основную программу намного более читаемой (и удобный в сопровождении!)

Смотрят на это сообщение для примера C#, и эта статья для примера C++.

9
задан Lebyrt 9 May 2014 в 08:25
поделиться

3 ответа

Это несколько месяцев поздно, но ответ - да; GNUstep будет поддерживать функции Objective-C 2.0 (а также блоки). На данный момент все более-менее реализовано, но требует тестирования и отладки. Для этих функций требуется Clang, а не gcc, и в настоящее время вам необходимо использовать магистральную версию.

См. Объяснение Дэвида Чизнолла в этом потоке для получения более подробной информации: http://groups.google.com/group/gnu.gnustep.discuss/browse_thread/thread/b0a5fa4e3be71bb1#

12
ответ дан 4 December 2019 в 12:20
поделиться

Я не уверен, последует ли реализация Objective-C GNUstep примеру Apple в синтезе аксессуаров / мутаторов, но если вы пытаетесь создать приложение для Mac, Windows и Linux, GNUstep, вероятно, не лучший выбор. Перенести код из Cocoa в GNUstep должно быть довольно легко (и вы можете даже написать макрос для преобразования деклараций свойств), но очень немногие люди используют GNUstep в Linux и еще меньше в Windows. Мне нравится идея кроссплатформенной реализации OpenStep, но на данный момент она непрактична с точки зрения принятия.

2
ответ дан 4 December 2019 в 12:20
поделиться

Нет, я не знаю, есть ли планы по поддержке свойств, но если GNUstep планирует оставаться жизнеспособным (даже если только в той ограниченной степени, в которой это происходит сейчас), это должно быть приоритет. Если GNUstep не решит принять функции Objective-C 2.0, разрыв между ним и реализацией Apple сделает написание хорошего кроссплатформенного кода все труднее. (Для большинства разработчиков это уже практически бессмысленно.)

Хотя я обычно ненавижу ответы, в которых по сути говорится: «Не делай этого, это плохая идея», я должен согласиться с @Jonathan в этом вопросе, особенно с точки зрения практичность. Хотя код может компилировать кросс-платформенный, если пользователям нужно установить среду выполнения только для того, чтобы использовать ваше приложение, вероятность того, что кто-то будет использовать ваше приложение, значительно снижается.

Этот SO-ответ хорошо резюмирует. Предлагаю прочитать его и сделать свой вывод.

Также стоит учесть, что тег « objective-c» содержит более 3280 вопросов, а «gnustep» - 9. I Я не говорю, что количество вопросов - это показатель качества, но это параллель с активностью и интересом, и, вполне возможно, с небольшим количеством людей, имеющих опыт работы с GNUstep на этом сайте. Таким образом, у вас меньше шансов получить хорошую помощь, если вы решите пойти по пути, который вы рассматриваете.

Между прочим, менталитет избегания новых функций во имя совместимости - это поведение «наименьшего общего знаменателя» это, в конечном итоге, сделает ваш код менее элегантным и менее «функциональным». Это похоже на кодирование только с API, доступным на 10. 2 или 10.3 - любой недавний разработчик OS X или iPhone скажет вам, что он предпочел бы воспользоваться преимуществами новых интересных функций, а не ограничениями прошлого. В наши дни для новых приложений почти всегда требуется версия 10,5 - поддержка старых версий более характерна для уже установленного программного обеспечения, имеющего обратную совместимость, и многие приложения со временем даже отказываются от старых ОС.

Если вы планируете продать приложение, используйте только API-интерфейсы, совместимые с GNUstep, серьезно ограничат ваш рынок и даже фундаментально ограничат ваше приложение, включая уровень полировки и функциональности, на которые вы можете надеяться. Даже если приложение не будет коммерческим, в целом есть смысл использовать язык и фреймворки, которые лучше всего подходят для данной платформы. Если вам действительно нужна кроссплатформенная поддержка, Java, скорее всего, поможет вам сблизиться, избавившись от изжоги. (Java определенно не мой любимый язык, и это не какао, но он делает многие вещи хорошо.) Хотя проблема языковой версии для разных клиентов и платформ по-прежнему остается той же, по крайней мере, он разработан , чтобы быть перекрестным -платформа, и все потребительские платформы имеют надежную поддержку Java.

3
ответ дан 4 December 2019 в 12:20
поделиться
Другие вопросы по тегам:

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