Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c GNUstep会支持@property和@synthesis吗?_Objective C_Gnustep - Fatal编程技术网

Objective c GNUstep会支持@property和@synthesis吗?

Objective c GNUstep会支持@property和@synthesis吗?,objective-c,gnustep,Objective C,Gnustep,我正在开发一个Cocoa应用程序,打算使用GNUstep在Windows和Linux上使用它。到目前为止,我一直在避免使用Objective-C2.0特性,但我真的很想至少开始使用属性。谷歌似乎告诉我(尽管我在这个问题上找不到太多东西)目前,没有Objective-C2.0功能可以与GNUstep一起使用。有人知道GNUstep是否有支持@property和@Synthesis的计划吗 我还想知道是否有一个“扩展”它们的好策略?我当然可以想象一个程序可以使用@property和@synthesi

我正在开发一个Cocoa应用程序,打算使用GNUstep在Windows和Linux上使用它。到目前为止,我一直在避免使用Objective-C2.0特性,但我真的很想至少开始使用属性。谷歌似乎告诉我(尽管我在这个问题上找不到太多东西)目前,没有Objective-C2.0功能可以与GNUstep一起使用。有人知道GNUstep是否有支持@property和@Synthesis的计划吗

我还想知道是否有一个“扩展”它们的好策略?我当然可以想象一个程序可以使用@property和@synthesis将代码扩展为不使用Objective-C2.0功能的代码,但我担心这样的功能需求不大,所以我可能找不到


你认为GNUstep很有可能在未来一年左右支持@property和@synthesis吗?

我不确定Objective-C的GNUstep实现是否会效仿苹果在访问器/变异器合成方面的领先地位,但如果你正试图为Mac、Windows和Linux开发一款应用程序,GNUstep可能不是最佳选择。将代码从Cocoa移植到GNUstep应该很容易(您甚至可以编写一个宏来转换属性声明),但是很少有人在Linux上使用GNUstep,在Windows上使用GNUstep的人更少。我喜欢跨平台OpenStep实现的想法,但就目前而言,它在采用方面并不实用。

不,我不知道是否有支持属性的计划,但如果GNUstep计划保持可行性(即使只是在目前有限的程度上),这应该是一个优先事项。除非GNUstep决定采用Objective-C2.0特性,否则它与苹果的实现之间的差距将使编写好的跨平台代码变得越来越困难。(对于大多数开发人员来说,这已经毫无意义了。)

虽然我通常不喜欢回答“不要那样做,这是个坏主意”,但我必须同意@Jonathan的观点,特别是从实用性的角度来看。虽然代码可以跨平台编译,但如果用户必须安装运行时才能使用你的应用程序,那么有人使用你的应用程序的可能性将大大降低

总结得很好。我建议你读一读,然后得出自己的结论

同样值得考虑的是“tag有3280多个问题,而有9个。我并不是说问题量是质量的一个衡量标准,但它与活动和兴趣是平行的,而且很可能在这个网站上拥有GNUstep专业知识的人数很少。因此,如果你选择走你正在考虑的道路,你就不太可能得到好的帮助

顺便说一句,以兼容性为名避免新特性的心态是一种“最小公分母”行为,从长远来看,这会使代码不那么优雅,也不那么“有特色”。这类似于只使用10.2或10.3上提供的API进行编码——任何最新的OS X或iPhone开发人员都会告诉你,他们更愿意利用这些酷炫的新功能,而不是被过去的限制所阻碍。如今,新的应用程序几乎总是需要10.5版本——对旧版本的支持更具有向后兼容的成熟软件的特点,许多应用程序甚至会随着时间的推移放弃旧的操作系统


如果您正在考虑销售应用程序,那么仅使用与GNUstep兼容的api将严重限制您的市场,甚至从根本上限制您的应用程序,包括您希望达到的完善程度和功能。即使应用程序不会商业化,使用最适合给定平台的语言和框架通常也是有好处的。如果你真的在寻找跨平台的支持,Java很可能会让你更接近它,而不会让你心烦意乱。(Java绝对不是我最喜欢的语言,它也不是Cocoa,但它在很多方面都做得很好。)尽管在客户端和平台之间仍然存在同样的语言版本问题,但至少它是设计成跨平台的,所有消费平台都有坚实的Java支持。

这已经晚了几个月,但答案是肯定的;GNUstep将支持Objective-C2.0特性(以及块)。目前,一切都或多或少实现了,但需要测试和调试。这些特性需要Clang而不是gcc,目前您需要使用trunk版本

有关更多详细信息,请参阅本帖中David Chisnall的解释:
关于“不要做它”的主题:这是一个有趣的情况——我不需要太多的基础,而且大部分代码都是我自己的类,还有相当多的XML读写。因此,我认为与GNUstep保持兼容并不是什么大问题。至于让我的用户安装一个运行时,我希望通过一个编写良好的安装程序来解决这个问题,如果他们愿意的话,这个安装程序可以为他们处理一切。(我很想听到你对这两点的反对意见。)如果有人试图这么做:我从未能让Obj-C 2.0与GNUstep一起工作,但它似乎与Cocotron一起工作得很好(尽管你需要访问Mac进行编译)。该链接现在已经失效,但这里有一个具有相同信息的不同来源: