17

たとえば、http://developer.apple.com/cocoa/pyobjc.htmlは、10.5LeopardではなくOSX10.4Tiger用です。これがAppleの公式ドキュメントです。

公式のPyObjCページも同様に悪いです。http ://pyobjc.sourceforge.net/

とてもひどいので困惑します。主にRubyCocoaの内容がはるかによく文書化されており、まともなチュートリアルがたくさんあるため(たとえば、 http: //www.rubycocoa.com/ )、ShoesのおかげでRubyの学習を検討しています。 GUIツールキット。

このひどく自動翻訳された日本語のチュートリアルでさえ、私が見つけた他のドキュメントよりも便利です。

私がやりたいのは、Cocoa GUIを使用してかなり単純なPythonアプリケーションを作成することだけです。
恐ろしいドキュメントに光を当てたり、コードの巨大なブロックを提供するだけでなく、何ができるかを知っていると仮定するチュートリアルを教えてもらえますかNSThread.detachNewThreadSelector_toTarget_withObject_("queryController", self, None)。 ?

4

9 に答える 9

31

PyObjC のドキュメントがない主な理由は、開発者が 1 人 (私) であり、ほとんどの開発者と同様に、ドキュメントを書くのが特に好きではないためです。PyObjC は私にとってサイド プロジェクトであるため、機能やバグ修正に集中する傾向があります。

ドキュメントを改善する最善の方法は、pyobjc-dev メーリング リストでボランティアとして支援することです。

余談ですが、pythonmac-sig メーリングリスト (Google を参照) は、(PyObjC だけでなく) MacOSX 上の Python に関するヘルプを得るのに優れたリソースです。

于 2009-05-24T08:08:52.207 に答える
21

私は、そのチュートリアルに欠陥があり、説明のつかないランダムなコードが目の前に表示されることに同意します。自動解放プールやユーザーのデフォルトなどの概念を、なぜ必要なのかを説明せずに紹介します(「メモリ管理用の自動解放プール」はほとんど説明されていません)。

そうは言っても…</p>

基本的に私がやりたいのは、ObjCを学ぶことなくCocoaアプリケーションを書くことだけです。

ココアを使用する言語の恩恵を受けるには、当面の間、 ObjCの基本的な理解が必要になると思います。PyObjC、RubyCocoa、Nuなどはせいぜいニッチであり、それらはすべて、ObjCCocoaの内外に精通している人々によって開発されました。

今のところ、これらのブリッジを使用してアプリケーション全体を構築しようとするのではなく、スクリプト言語が真に輝く場所でこれらのブリッジが有用であると現実的に見れば、最もメリットがあります。これは実行されていますが(LimeChatを使用して、現在RubyCocoaで作成されたアプリを使用しています)、まれであり、しばらくの間使用される可能性があります。

于 2008-08-18T12:18:52.600 に答える
21

率直に言うと:

効果的な Cocoa プログラマーになりたい場合は、Objective-C を学ぶ必要があります。話の終わり。

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

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

于 2008-10-25T21:07:47.490 に答える
7

Tom と Martin の反応は間違いなく真実です (ほぼすべてのオープンソース プロジェクトで、ほとんどの貢献者は開発に特に関心があることがわかります。ドキュメントなどの半関連事項にはあまり関心がありません)。最後にあなたの特定の質問が PyObjC ドキュメント内にうまく収まると思います。

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

NSThreadは Cocoa API の一部であり、特定のメソッドを含めてApple で文書化されて+ detachNewThreadSelector:toTarget:withObject:います(そこにリンクしますが、stackoverflow には解析に関するバグがあるようです)。CocoaDev wikiにも記事があります

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

于 2008-08-18T11:38:51.480 に答える
7

PyObjC/Cocoa に関する優れたチュートリアルを偶然見つけました。

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

于 2008-08-27T11:12:51.600 に答える
5

Objective C や Cocoa についてはまったく知りませんでしたが (ただし、Python については十分です)、PyObjc でかなり複雑なアプリケーションを作成しています。どうやって学んだ?私はOSX 用の Cocoa プログラミングを手に取り、PyObjC を使用して本全体 (非常に簡単なプロセス) を読みました。メモリ管理については何も無視すれば、ほとんど問題ありません。唯一の注意点は、非常にまれに endSheetMethod のようなデコレータを使用する必要があることです (実際、私がヒットしたのはこれだけだと思います)。

@PyObjcTools.AppHelper.endSheetMethod
def alertEnded_code_context_(self, alert, choice, context):
    pass
于 2008-12-28T23:05:57.460 に答える
5

私がやりたいのは、Cocoa GUI を使用してかなり単純な Python アプリケーションを作成することだけです.誰かが恐ろしいドキュメントに光を当てたり、コードの巨大なブロックを提供するだけでなく、NSThread.detachNewThreadSelector_toTarget_withObject_ ("queryController", self, None) は..?

[...]

基本的に私がやりたいことは、ObjC を学ばなくても Cocoa アプリケーションを作成することだけです。

私は基本的に Soeren の回答に同意しますが、さらに次のように考えます。

Objective C をある程度理解していなくても Cocoa を使えるようになるまでには、長い時間がかかるでしょう。これは、上で引用したコード行の例で確認できます。

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 フレームワークにより、オブジェクトが新しいスレッドで何かを開始することが容易になります。

しかしキッカーはこれです: ここでの Cocoa フレームワーク (NSThread) は、フレームワークが記述された言語に明示的に関連付けられた方法で、この便利なサービスを提供しています。つまり、NSThread は、「セレクター」を明示的に参照する機能を提供してくれました。 . セレクターは、実際のところ、Objective C がどのように機能するかについての基本的なものの名前です。

だからこすりがあります。Cocoa は基本的に Objective-C で作成されたものであり、その作成者は Objective C を念頭に置いてそれを構築しました。Cocoa 機能へのインターフェースを他の言語により自然な形に変換することが不可能だと主張しているわけではありません。Cocoa フレームワークを変更して「セレクター」を参照しないようにするとすぐに、それは実際には Cocoa フレームワークではなくなります。翻訳版です。そして、その道を歩み始めると、物事は本当に厄介になると思います. あなたは Apple が Cocoa を更新するのに遅れないようにしようとしていますが、新しい言語にうまく翻訳されていない Cocoa の部分に遭遇するかもしれません。その代わりに、PyObjC のようなものは、非常に明確で単純な相関関係を持つ方法で Cocoa を直接公開することを選択します。彼らがドキュメントで言うように:

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

確かに、それは少し醜いです。それは、Objective-C について何かを知る必要があることを意味します。

于 2008-09-23T14:24:46.940 に答える
3

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

于 2008-08-18T10:27:20.173 に答える
3

トムはそれをすべて本当に言います。多くのオープンソース プロジェクトには専任の開発者がおり、ドキュメント化に関心のある開発者はほとんどいません。ゴールポストは日々変化する可能性があるため、ドキュメントを作成するだけでなく、維持する必要があります。

于 2008-08-18T10:41:41.547 に答える