当前位置:  开发笔记 > 编程语言 > 正文

什么是Objective-C for Mac编程的替代品?

如何解决《什么是Objective-CforMac编程的替代品?》经验,为你挑选了3个好方法。

我已经在无指针,垃圾收集编程语言的世界中变得非常舒服.现在我必须编写一个小型Mac组件.我一直在学习Objective-C,但是当我面对悬挂指针的可能性以及管理保留计数的需要时,我感到沮丧.

我知道Objective-C现在有垃圾收集,但这只适用于Leopard.我的组件也必须与Tiger合作.

我需要访问一些Java不可用的Cocoa库,因此排除了我常用的武器选择.

我有什么选择?特别是没有显式指针和自动垃圾收集.



1> Louis Gerbar..:

你是什​​么意思"组件?" 您是指要将其他人链接到他们的应用程序中的大量代码或库吗?如果是这样的话,那么现在使用任何桥接语言是不现实的.虽然许多桥梁非常好,但它们几乎总是存在复杂性和问题,大多数应用程序开发人员不愿意使用单个组件来处理,特别是如果它涉及引入大量运行时.

桥梁对于将其他语言库桥接到Objective C应用程序是最有价值的.虽然您可以使用它们编写相当完整的应用程序,但这样做通常需要更好地理解Objective C,而不仅仅是编写Objective C应用程序,因为您需要了解并处理语言,对象模型,线程和内存分配阻抗不匹配,发生.

这也是为什么许多人认为即使你非常熟悉一种语言,尝试通过桥梁学习使用该语言的Cocoa通常更难以使用Objective C学习它.

最后,最近对桥接语言的大部分支持都归功于"BridgeSupport",Leopard中增加了一项功能.即使是那些早于过去的桥梁也在向着这种方向迁移,有时候使用Tiger和Leopard上的桥接语言会产生很大的差异.此外,目前还没有iPhone的桥接支持,如果这是一个问题,大多数桥接语言将无法使用它.

最后,如果您正在编写一个将链接到其他应用程序的库,则需要在Tiger和Leopard上运行,并且您需要访问仅使用Cocoa的API,我认为您会发现使用任何非Objective C解决方案非常困难.



2> Davide Guala..:

如果您对Ruby感兴趣,可以尝试PyObjC在python中编写Cocoa应用程序,或者MacRuby.



3> Sherm Pendle..:

你不应该被Cocoa的保留/释放引用计数吓倒.实践中,这比GC粉丝相信要容易得多.在可可内存管理规则是死的简单,只会影响你的代码很少量的,甚至可以自动的生成代码.

这是诀窍.您将MM代码封装在访问器方法中,并始终使用访问器.Xcode中有内置的脚本来生成适当的访问,或者如果您需要更多的灵活性,有3部分应用程序,如Accessorizer.

这不是一种侵入性的方法 - 你只需要担心保留一个对象,如果你需要保留它以供以后使用,如果你要这样做,你需要一个实例变量来无论如何要保持它.而且,如果您正在使用KVO和绑定,则需要使用访问器以确保触发相应的观察者通知.基本上,如果你正在使用良好的OOP和Cocoa实践,那么内存管理几乎没有额外的思考或努力.

大多数对Cocoa的"手动"内存管理有困难的人都是因为误用它而这样做的.最常见的错误是将相关代码分散到各处.这意味着很难找到遗漏,额外释放等.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有