Будет ли GNUstep поддерживать @property и @synthesize? - PullRequest
9 голосов
/ 09 августа 2009

Я работаю над приложением Какао с намерением использовать его в Windows и Linux, используя GNUstep. До сих пор я избегал функций Objective-C 2.0, но мне бы очень хотелось начать использовать хотя бы свойства. Google, кажется, говорит мне (хотя у меня возникают проблемы с поиском многого по этому вопросу), что в настоящее время никакие функции Objective C не работают с GNUstep. Кто-нибудь знает, есть ли планы для GNUstep для поддержки @property и @synthesize?

Мне также интересно, есть ли хорошая стратегия для их "расширения"? Я, конечно, мог бы представить программу, которая могла бы расширять код, используя @property и @synthesize, в код, который не использует никаких функций Objective-C 2.0, но я боюсь, что такой вещи не так много, поэтому я, вероятно, выиграл » я не смогу его найти.

Как вы думаете, есть ли хороший шанс, что GNUstep будет поддерживать @property и @synthesize в следующем году или около того?

Ответы [ 3 ]

12 голосов
/ 25 ноября 2009

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

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

3 голосов
/ 09 августа 2009

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

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

Этот ТАК ответ хорошо подводит итог. Предлагаю прочесть и сделать собственный вывод.

Стоит также учесть, что в теге * jective-c * содержится более 3280 вопросов, а в "gnustep" - 9. Я не говорю, что объем вопроса - это показатель качества, но это параллель с активностью и интересом, и, возможно, небольшое количество людей с опытом работы с GNUstep на этом сайте. Таким образом, у вас меньше шансов получить хорошую помощь, если вы решите пойти по пути, который вы рассматриваете.

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

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

2 голосов
/ 09 августа 2009

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

...