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

为什么PyObjC文档如此糟糕?

如何解决《为什么PyObjC文档如此糟糕?》经验,为你挑选了6个好方法。

例如,http://developer.apple.com/cocoa/pyobjc.html仍然适用于OS X 10.4 Tiger,而不是10.5 Leopard ..而且这是Apple的官方文档..

官方PyObjC页面同样糟糕,http: //pyobjc.sourceforge.net/

这太糟糕了,令人费解......我正在考虑学习Ruby主要是因为RubyCocoa的东西有更好的文档记录,并且有很多不错的教程(例如http://www.rubycocoa.com/),并且因为鞋子GUI工具包..

即使是这个严重自动翻译的日语教程也比我能找到的其他文档更有用.

我想要做的就是使用Cocoa GUI创建相当简单的Python应用程序..
任何人都可以了解可怕的文档,或者指出一些教程不仅仅会给你巨大的代码块并假设你知道什么NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None)是... ?



1> Ronald Ousso..:

PyObjC缺乏文档的主要原因是有一个开发人员(我),而且大多数开发人员并不特别喜欢编写文档.因为PyObjC对我来说是一个侧面项目,所以我倾向于专注于功能和错误修正,因为这对我来说更有趣.

改进文档的最佳方法是自愿提供pyobjc-dev邮件列表的帮助.

顺便说一句:pythonmac-sig邮件列表(请参阅google)是在MacOSX上获取Python帮助的优秀资源(不仅仅是PyObjC).



2> Sören Kuklau..:

我同意该教程存在缺陷,在您面前抛出随机,无法解释的代码.它引入了自动释放池和用户默认值等概念,但没有解释为什么你会想要它们("内存管理的自动释放池"几乎不是一个解释).

那说......

基本上我想做的就是编写Cocoa应用程序而无需学习ObjC.

恐怕暂时,你需要ObjC基本掌握,以便从使用可可任何语言中受益.PyObjC,RubyCocoa,Nu和其他人都是最好的利基,所有这些都是由熟悉ObjC Cocoa 的细节的人开发的.

现在,如果您真实地看到这些桥接在脚本语言真正发挥作用时非常有用,而不是尝试使用它们构建整个应用程序,那么您将受益最多.虽然这已经被做(与LimeChat,我使用的是RubyCocoa编写应用程序现在),实属罕见,并有可能将是一段时间.



3> bbum..:

直言不讳:

如果你想成为一名有效的Cocoa程序员,你必须学习Objective-C.故事结局.

Python或Ruby都不能通过各自的桥梁替代Objective-C.您仍然必须了解Objective-C API,NSObject派生类固有的行为以及Cocoa的许多其他细节.

PyObjC和RubyCocoa是从Cocoa应用程序访问Python或Ruby功能的好方法,包括在Python或Ruby中构建Cocoa应用程序 - 如果不是全部的话 - .但其中的成功建立在对Cocoa及其组成的Objective-C API的透彻理解之上.



4> Sören Kuklau..:

汤姆和马丁的回答绝对是真的(在任何开源项目中,你会发现大多数贡献者特别感兴趣,好吧,开发 ;而不是在半相关的事情,如文档),但我不认为你最后的特定问题很适合PyObjC文档.

NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None)

NSThread是Cocoa API的一部分,并在Apple上记录,包括特定的方法+ detachNewThreadSelector:toTarget:withObject:(我在那里链接,但显然stackoverflow有解析它的错误).CocoaDev wiki 也有一篇文章.

我不认为PyObjC尝试记录Cocoa是个好主意,除了一些如何在Python中使用它的基本示例.解释选择器也可能超出了PyObjC的范围,因为它们也是Objective-C的一个特性,而不是PyObjC的特征.



5> dbr..:

我偶然发现了一个关于PyObjC/Cocoa的好教程:

http://lethain.com/entry/2008/aug/22/an-epic-introduction-to-pyobjc-and-cocoa/



6> Christopher ..:

我想要做的就是使用Cocoa GUI创建相当简单的Python应用程序.任何人都可以了解可怕的文档,或者指出一些不只是给你巨大的代码块的教程,并假设你知道NSThread.detachNewThreadSelector_toTarget_withObject_ ("queryController",self,None)确实..?

[...]

基本上我想做的就是编写Cocoa应用程序而无需学习ObjC.

虽然我基本同意Soeren的回应,但我会更进一步:

在没有对Objective C有所了解的情况下使用Cocoa之前需要很长时间.Cocoa不是独立于Objective C构建的抽象,它与它明确相关.您可以在上面引用的示例代码行中看到这一点:

NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None) 

这是编写Objective C行的Python方法:

[NSThread detachNewThreadSelector:@selector(queryController:) toTarget:self withObject:nil];

现在,重要的是要注意这一行可以用两种方式看出:(1)作为Objective C的一行,或者(2)作为Cocoa框架的调用.我们通过语法将其视为(1).我们将其视为(2),认识到NSThread是一个Cocoa框架,它提供了一组方便的功能.在这种情况下,这个特定的Cocoa框架使我们很容易让对象开始在新线程上做某事.

但是踢球者是这样的:这里的Cocoa框架(NSThread)以一种明确与框架编写语言相关联的方式为我们提供这种方便的服务.也就是说,NSThread为我们提供了一个明确指向"选择器"的功能. .事实上,选择器是关于Objective C如何工作的基本名称.

所以有一点问题.Cocoa从根本上说是一个Objective-C创建,它的创建者在构建它时考虑了Objective C. 我并不是说不可能将Cocoa功能的界面翻译成其他语言更自然的形式.只是当你改变Cocoa框架以停止引用"选择器"时,它就不再是Cocoa框架了.这是一个翻译版本.一旦你开始走这条路,我猜测事情变得非常混乱.你正在努力跟上苹果公司,因为他们更新了Cocoa,也许你会碰到Cocoa的某些部分,而这些部分只是不能很好地翻译成新语言,无论如何.因此,像PyObjC这样的东西选择直接暴露Cocoa,其方式具有非常清晰和简单的相关性.正如他们在文档中所说:

为了在Objective-C消息和Python方法之间进行无损且无歧义的转换,Python方法名称等价只是选择器,冒号由下划线替换.

当然,它有点难看,它确实意味着你需要了解一些关于Objective-C的东西,但那是因为如果一个真正存在的替代方案不一定更好.

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