为什么是PyObjC的文件那么糟糕吗?[关闭]
题
例如, http://developer.apple.com/cocoa/pyobjc.html 仍然是for OS X10.4虎,不10.5豹..这就是官方的苹果文件。
官方PyObjC页是同样坏, http://pyobjc.sourceforge.net/
它是如此的糟糕了,这令人困惑..我正考虑学习红宝石主要是因为RubyCocoa东西这么多更好的记录,并有很多不错的教程,(http://www.rubycocoa.com/ 例如),因为鞋子GUI工具包..
甚至 这不好-自动翻译的日文教程 更有用的,其余的文件,我能找到..
我所要做的是制造相当简单的蟒蛇应与可可GUI。
任何人都可以阐明可怕的文件,或者点我在一些教程,不只是给你巨大块代码和假设你知道什么 NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None)
不..?
解决方案
我同意,该教程是有缺陷的,随机投掷的,原因不明的代码就在你的眼前。它引入概念,例如自动释放游泳池和用户违约没有解释为什么你会希望他们("自动释放游泳池的存储管理"几乎是不一的解释)。
那所说的...
基本上我要做的是写可可应用,而不具有学习ObjC.
我怕,你 将 需要一个基本掌握的ObjC以从中受益的任何语言使用的可可。PyObjC,RubyCocoa、Nu和其他壁龛,他们都是通过开发人民非常熟悉的来龙去脉ObjC 和 可可。
现在,你将受益最多的如果现实地看到这些桥梁作用脚本语言真正的亮光,而不是试图建立一个整体的应用程序。虽然这个 已 已经完成(与LimeChat,我使用一个RubyCocoa编写的应用程序现在正),这是罕见的,并可能会一段时间。
其他提示
主要原因是缺乏文件PyObjC是,有一个开发商(我的),并作为大多数开发我特别不喜欢写的文件。因为PyObjC是侧项目对我来说,我倾向于把重点放在工作上设和错误修正,因为这是更有趣我。
最佳的方式改进该文件是志愿者,以帮助在pyobjc-开发的邮件列表。
作为一个旁白:该pythonmac-sig邮件列表(见谷歌)是一个良好的资源得到帮助,蟒蛇在MacOSX(不仅仅是PyObjC).
被钝:
如果你想要一个有效的可可的程序员,你必须学习目标。故事的结尾。
既不是蟒蛇或宝石被一个替代品的目标-C通过它们各自的桥梁。你还是要了解目标-C Api的行为固有的NSObject源类,以及许多其他详细信息的可可。
PyObjC和RubyCocoa是一个伟大的方式来访问蟒蛇或红宝石的功能,从可可应用程序,包括建立一个可可应用程序主要--如果不完全是--在蟒蛇或红宝石。但在其中取得成功是建立在透彻了解的可可及的目标-C Api它组成。
汤姆和马丁的回应是肯定的真实(在任何开放源码项目中,你会发现大多数捐助者特别感兴趣,好吧, 发展;没有那么多半有关的事项,例如文件),但我不认为你的特别问题结束时将配合良好的内部PyObjC文件。
NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None)
NSThread
是的一部分,可可API,并作为这样的 记录在苹果, ,其中包括该特定方法 + detachNewThreadSelector:toTarget:withObject:
(我的链路存在,但显然,计算器具的错误与分析)。该CocoaDev wiki 还有一篇文章.
我不认为这将是一个好主意PyObjC试图文件可可,其他一些基本的例子如何使用它从内蟒蛇。说明选择也是可能的范围之外PyObjC,因为这些也是一个要素的目标-C,不PyObjC具体的说明。
我偶然发现了一个很好的教程PyObjC/可可:
http://lethain.com/entry/2008/aug/22/an-epic-introduction-to-pyobjc-and-cocoa/
我所要做的是制造相当简单的蟒蛇应与可可GUI。任何人都可以阐明可怕的文件,或者点我在一些教程,不只是给你巨大块代码和假设你知道什么NSThread.detachNewThreadSelector_toTarget_withobject_("queryController",自我,无)不..?
[...]
基本上我要做的是写可可应用,而不具有学习ObjC.
虽然我基本上同意。的响应,我会把它更进一步:
它将是一个漫长的时间,如果有的话,可以使用前的可可没有一些理解的目标C可可不是一个抽象概念建立独立从客观C时,它是明确地连接到它。你可以看到这在例行代码你上面引述:
NSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None)
这是蟒蛇的写作方式的目C的线:
[NSThread detachNewThreadSelector:@selector(queryController:) toTarget:self withObject:nil];
现在,重要的是要注意到在这里的是,这条线可以看到在两个方面:(1)作为一线的目标,C,或者(2)如调用可可的框架。我们看到它作为(1)通过语法。我们把它看作(2)通过认识到NSThread是一个可可的框架,这提供了一套方便的功能。在这种情况下,这特别是可可的框架,使得它很容易对我们要有一个对象开始做的事情上的一个新的螺纹。
但是厉害的是这个:可可的框架,在这里(NSThread)是向我们提供一个方便的服务的方式,是明确地绑在语言的框架已经编写的。即NSThread给了我们一个功能,明确指的是"选择".选择是,事实上,该名称的东西根本关于如何目C的工作。
因此,有擦。可可是根本的目标-C设立的,其创建它的目标C中心。我不是声称这是不可能的翻译的接口的可可设成一个形成更多的自然为其他语言。这只是尽快改变可可的框架,以停止参看"选择",它不是真正的可可的框架。这是一个翻译版本。和一旦你开始走下这条道路,我猜事情变得很混乱。你试图跟上的苹果,因为他们更新可可,也许你命中的某些部分可可,只是不要翻译以及进入新的语言,无论。因此,不是,事情就像PyObjC选择,以获得可可直接的方式,有一个非常明确和简单的相关性。正如他们所说的文件:
为了有一个无损的和毫不含糊之间的转换目标-C信息和Python方法,蟒蛇的方法名称相当简单地选择与分号替换为下划线。
当然,这是一个有点丑,这并不意味着你需要知道一些关于目标-C,但这是因为替代,如果一个真正存在,是不是必须更好。
我什么都不知道在所有有关的目标或C的可可(但很多关于Python),但是我现在写一个相当复杂的应用程序在PyObjc.我怎么会了解?我捡起来 可可编程OS x 通过了整本书(一个漂亮的快速过程中)采用PyObjC.只是忽略任何有关存储管理和你差不多是罚款。唯一需要注意的是,非常偶尔你必须使用装饰像endSheetMethod(实际上我认为那是唯一一个我已经打):
@PyObjcTools.AppHelper.endSheetMethod
def alertEnded_code_context_(self, alert, choice, context):
pass
这个答案不会是非常有益的,但是,作为一个开我讨厌这样做的文件。这是一个开放源码项目,很难找到人来做文件。
汤姆说这一切是真的。许多开放源项目,有专门的开发商和少数人感兴趣的记录。它不是帮助事实上,目标可以改变上一个日常的基础上这意味着文件的不仅有创建的,但是维持。