9
votes

Gnustep supporte-t-il @Property et @synthésize?

Je travaille sur une application de cacao dans l'intention de l'utiliser sur Windows et Linux en utilisant Gnustep. J'ai évité les caractéristiques de l'objectif-C 2.0 jusqu'à présent, mais j'aimerais vraiment commencer à utiliser au moins des propriétés. Ce que Google semble me dire (bien que je n'ai pas de mal à trouver beaucoup sur le sujet) est que, à l'heure actuelle, aucun objectif-C 2.0 ne fonctionne avec Gnustep. Est-ce que quelqu'un sait s'il y a plans pour Gnustep pour supporter @property et @synthesize?

Je me demande aussi s'il y a une bonne stratégie pour les "élargir"? Je pouvais certainement imaginer un programme qui pourrait élargir le code à l'aide de @property et @synthesize dans le code qui n'utilise aucune fonctionnalité Objective-C 2.0, mais je suis inquiet, il n'y a pas beaucoup de demande d'une telle chose, donc j'ai probablement gagné ' plus être capable de trouver un.

Pensez-vous qu'il y a de bonnes chances que Gnustep supporte @Property et @synthesize dans l'année prochaine ou plus?


2 commentaires

Sur le sujet de "ne le fais pas!": C'est une situation intéressante - je n'ai pas besoin de beaucoup à l'extérieur de la fondation et que la majorité du code est des tonnes de mes propres cours, ainsi que beaucoup de lecture XML et écrit. Ainsi, je pensais que ce ne serait pas un gros problème de rester compatible avec Gnustep. En ce qui concerne les utilisateurs d'installer un exécution, j'espérais combattre cela avec un installateur bien écrit qui gère tout pour eux s'ils le souhaitent. (Je suis intéressé d'entendre des objections que vous avez à ces deux points, cependant.)


Si quelqu'un essaie de le faire: je n'ai jamais pu obtenir obj-C 2.0 travailler avec Gnustep, mais il semble bon travailler avec Cocotron (bien que vous aurez besoin d'accéder à un Mac pour la compilation).


3 Réponses :


2
votes

Je ne suis pas sûr que l'implémentation de Gnustep de l'objectif-C suivra ou non la mise en œuvre d'Apple dans la synthèse d'accessor / mutateur, mais si vous essayez de créer une application pour Mac, Windows et Linux, Gnustep n'est probablement pas le meilleur choix . Il devrait être assez facile de porter le code de cacao à gnustep (et vous pourrez même écrire une macro pour convertir vos déclarations de propriété), mais très peu de personnes utilisent Gnustep sur Linux et même moins de fenêtres. J'aime l'idée d'une implémentation de plate-forme de plate-forme multiplate-forme, mais pour le moment, ce n'est pas vraiment pratique, adoption-sage.


0 commentaires

3
votes

Non, je ne sais pas s'il est prévu de soutenir les propriétés, mais si Gnustep envisage de rester viable (même si seulement dans la mesure limitée à laquelle elle est maintenant), cela devrait être une priorité. À moins que Gnustep décide d'adopter des caractéristiques de l'objectif-C 2.0, l'écart entre l'informatique et la mise en œuvre d'Apple rendra de plus en plus difficile d'écrire un bon code multi-plate-forme. (C'est déjà limite inutile pour la plupart des développeurs.)

Bien que je déteste habituellement des réponses qui disent essentiellement «ne le font pas, c'est une mauvaise idée», je dois accepter @jonathan sur celui-ci, surtout du point de vue de la praticité. Bien que le code puisse compiler une plate-forme inter-plate-forme, si les utilisateurs doivent installer un exécution juste pour utiliser votre application, la probabilité que quelqu'un utilisera votre application est considérablement diminué.

Cela répond donc le résume bien. Je suggère de le lire et de tirer votre propre conclusion.

Il convient également d'envisager que le " objectif-C" tag a plus de 3280 questions, tandis que "gnustep" a 9. Je ne dis pas que le volume de la question est une métrique de qualité, mais c'est un parallèle avec l'activité et l'intérêt et probablement un faible nombre de personnes ayant une expertise à Gnustep sur ce site. Ainsi, vous êtes moins susceptible d'obtenir une bonne aide si vous choisissez de descendre le chemin que vous envisagez.

Au fait, la mentalité d'éviter les nouvelles fonctionnalités au nom de la compatibilité est un comportement "dénominateur le moins commun" qui, à long terme, rendra votre code moins élégant et moins ". Il est similaire à celui que codant uniquement avec API disponibles sur 10.2 ou 10.3 - Tout développeur récent sur le système d'exploitation X ou iPhone vous dira qu'ils préfèrent tirer parti des nouvelles fonctionnalités froides et ne sont pas entravées par des limitations passées. Ces jours-ci, de nouvelles applications ont presque toujours besoin de 10.5 - La prise en charge des anciennes versions est plus caractéristique des logiciels établis qui est compatible en arrière et de nombreuses applications tombent même d'ancien système d'exploitation au fil du temps.

Si vous envisagez de vendre une demande, seuls uniquement les API compatibles Gnustep limiteront sévèrement votre marché et même limiteront votre application de manière fondamentale, y compris le niveau de polonais et de fonctionnalités que vous pouvez espérer atteindre. Même si l'application ne sera pas commerciale, il existe généralement du mérite d'utiliser la langue et les cadres qui conviennent le mieux à une plate-forme donnée. Si vous cherchez vraiment un soutien inter-plateforme, Java est susceptible de vous rapprocher de moins de brûlures d'estomac. (Java n'est définitivement pas ma langue préférée, et ce n'est pas du cacao, mais cela fait de nombreuses choses bien.) Bien qu'il existe toujours le même problème de la version linguistique entre les clients et les plates-formes, au moins c'est conçu Plate-forme croisée et toutes les plates-formes de consommation ont un support Java solide.


0 commentaires

12
votes

Ceci est quelques mois de retard, mais la réponse est oui; Gnustep prendra en charge les caractéristiques de l'objectif-C 2.0 (ainsi que des blocs). Actuellement, tout est plus ou moins mis en œuvre, mais il faut tester et déboguer. Ces fonctionnalités nécessitent des clangs plutôt que du GCC, et vous devez actuellement utiliser la version du coffre.

Voir l'explication de David Chisnall dans ce fil pour plus de détails: http://groups.google.com/group/gnu. gnustep.discuss / browsed_thread / thread / b0a5fa4e3be71bb1 #


1 commentaires

Ce lien est mort maintenant, mais voici une source différente avec les mêmes informations: wiki.gnustep.org/index .php / objc2_faq