2008-08-18 5 views
18

、それはだそう悪いですが、公式PyObjCページが均等に悪い..ですhttp://pyobjc.sourceforge.net/PyObjCのドキュメントが悪いのはなぜですか?例えば

http://developer.apple.com/cocoa/pyobjc.htmlは...ない10.5 LeopardのOS X 10.4 Tigerに、ためにまだある、それはそれのためのAppleの公式ドキュメントですでもthis badly-auto-translated Japanese tutorial ..

を不可解RubyCocoaのものはそんなに良く文書化され、まともなチュートリアル(例えばhttp://www.rubycocoa.com/)の、およびので靴のGUIツールキットの多くがありますので..私は主にルビーを学んで検討していることは、より便利です私が見つけることができるドキュメントの残りの部分よりも..

私がやりたいすべてがココアGUIのとかなり単純なPythonアプリケーションを作成..です
誰もが恐ろしいドキュメントに光を当てる、またはちょうどあなたのコードの巨大なブロックを与えると想定していないいくつかのチュートリアルで私を指すことができますあなたは何を知っているNSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None) ..?

+0

リンク先の最初のPyObjCチュートリアルは、Jonathan Rentzschの記事です(ビデオで彼の声を聞くことができ、C4ビデオからそれを認識できます)。それはAppleのサイトでは行なわずにありますが、Appleによって書かれ維持されているという意味では「Appleのドキュメント」ではありません。 –

+3

ドキュメントが嫌いですか?いくつかを書いてください。オープンソースのプロジェクトです。 – NSResponder

答えて

21

私はこのチュートリアルには欠陥があり、あなたの目の前にランダムで説明できないコードを投げ込むことに同意します。自動解放プールやユーザーのデフォルトなどの概念を紹介します(なぜなら、「メモリ管理用の自動解放プール」はほとんど説明ではありません)。言っ

...

は基本的に私がしたいすべてがにObjCを学ぶことなくCocoaアプリケーションを記述しています。私は当分の間、あなたココアを使用して任意の言語から利益を得るためににObjCの基本的な知識を必要とすること。怖い

PyObjC、RubyCocoa、Nuなどは、せいぜいニッチであり、すべてObjC Cocoaの機能に精通した人々によって開発されたものです。

ここでは、スクリプト言語が本当に輝くところで、それらのブリッジを使ってアプリケーション全体を構築しようとするよりも、それらのブリッジを実用的に役立てることができます。このにはがありましたが(LimeChatではRubyCocoaで書かれたアプリケーションを使用しています)、これはまれで、しばらくお待ちいただきます。

3

この回答は役に立ちませんが、開発者としてはドキュメント作成が嫌いです。これはオープンソースプロジェクトなので、ドキュメントを作成する人を見つけるのは難しいです。

3

トムは本当にそう言います。多くのオープンソースプロジェクトには専用の開発者がおり、ドキュメント化に関心のある人はほとんどいません。ゴールポストは毎日シフトすることができます。これは、ドキュメンテーションが作成されなければならないだけでなく維持されることを意味します。

7

Tom'sとMartinの回答は間違いありません(ほとんどのオープンソースプロジェクトでは、を開発していますが、ほとんどの寄稿者は特に関心があります)しかし、私はあなたの特定の質問がPyObjCのドキュメントの中にうまく収まるとは思っていません。

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

NSThreadのCocoa APIの一部であり、特定の方法+ detachNewThreadSelector:toTarget:withObject:含め、documented over at Appleのような(私はそこにリンクしたいが、どうやらstackoverflowのは、それを解析してバグがあります)。 CocoaDev wiki also has an article

PyObjCがPython内での使用方法のいくつかの基本的な例以外に、Cocoaを文書化しようとするのは良い考えではないと思います。セレクタを説明することは、PyObjCの範囲外である可能性もあります。PyObjCではなく、Objective-Cの機能でもあります。

5

...誰もが恐ろしいドキュメントに光を当てることができますあなたにコードの大きなブロックを与えず、NSThread.detachNewThreadSelector_toTarget_withObject _( "queryController"、self、None)が何をしているかを知っていると仮定しているチュートリアルでは、

[...]

基本的に私がやりたいすべてがにObjCを学ぶことなくCocoaアプリケーションを記述しています。

私は基本的に、私はさらにそれを取るだろう、Soerenのの応答に同意するものの:

かつて場合は、客観C.ココアISNをある程度理解することなく、ココアを使用することができます前に、それは、長い時間となります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フレームワークの呼び出しとして、2つの方法で見ることができます。私たちは構文で(1)と見なします。私たちは、NSThreadが便利な機能を提供するCocoaフレームワークであることを認識して、(2)と見ています。この場合、この特定のCocoaフレームワークは、新しいスレッドで何かを開始するオブジェクトを簡単に作成できるようにしています。

しかし、キッカーはこうです:ココアのフレームワーク(NSThread)は、このフレームワークが書かれた言語に明示的に結びついたこの便利なサービスを私たちに提供しています。つまり、NSThreadは明示的に"セレクター"に。セレクタは、実際には、Objective Cがどのように動作するかに関する基本的なものの名前です。

だから擦れがあります。ココアは基本的にObjective-Cの作成であり、その作成者はObjective Cを念頭に置いて作成しています。私は、インターフェイスをCocoaの機能に変換することは、他の言語にとってより自然な形に変換することは不可能だと主張しているわけではありません。 Cocoaフレームワークを "セレクタ"の参照をやめるように変更するとすぐに、実際はCocoaフレームワークではなくなりました。それは翻訳版です。そして、一度あなたがその道を下ると、私は物事が本当に乱雑になると推測しています。あなたはAppleがCocoaを更新する際にAppleに追いつこうとしています。多分、新しい言語にうまく翻訳できないココアの一部に当たったかもしれません。その代わりに、PyObjCのようなものは、非常に明確で単純な相関を持つ方法で、直接ココアを公開することを選択します。

Objective-CメッセージとPythonメソッドの間のロスレスで明確な変換を実現するために、同等のPythonメソッド名は、単にコロンをアンダースコアで置き換えたセレクタです。

確かに、これはObjective-Cのことを知る必要があることを意味しますが、これは本当に存在する場合、必ずしも良いとは限りません。

あなたが効果的なのCocoaプログラマになりたい場合は、Objective-Cのを学ばなければならない:鈍的には

21

。物語の終わり。

PythonまたはRubyは、それぞれのブリッジを介してObjective-Cに代わるものではありません。 Objective-C API、NSObject派生クラスに固有の振る舞い、およびその他多くのCocoaの詳細を理解する必要があります。

PyObjCとRubyCocoaは、PythonやRubyでCocoaアプリケーションからPythonやRubyの機能にアクセスするための優れた方法です。しかし、そこでの成功は、それが構成するCocoaとObjective-C APIの完全な理解に基づいています。

4

私はObjective CやCocoaについてよく知りませんでしたが、PyObjcではかなり複雑なアプリケーションを作成しています。どのように私は学びましたか?私はCocoa Programming for OSXをピックアップし、PyObjCを使用して本全体を(非常に簡単なプロセスで)調べました。メモリ管理について何も無視すれば、大丈夫です。唯一の注意点は、非常に時折、あなたが(実際に私はそれは私がヒットしてきただけだと思う​​)endSheetMethodのようなデコレータを使用する必要があることです。

@PyObjcTools.AppHelper.endSheetMethod 
def alertEnded_code_context_(self, alert, choice, context): 
    pass 
28

PyObjCのドキュメントの欠如の主な理由があるということです私の一人の開発者(私)、そしてほとんどの開発者として私は特に書類を書くことを好まない。 PyObjCは私のためのサイドプロジェクトなので、私は機能やバグ修正に専念する傾向があります。なぜなら、それは私にとってもっと面白いからです。

文書を改善する最も良い方法は、pyobjc-devメーリングリストのボランティアです。

pythonmac-sigメーリングリスト(googleを参照)は、MacOSX(PyObjCだけでなく)のPythonに関する助けを得るための優れたリソースです。

関連する問題