...誰もが恐ろしいドキュメントに光を当てることができますあなたにコードの大きなブロックを与えず、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のを学ばなければならない:鈍的には
リンク先の最初のPyObjCチュートリアルは、Jonathan Rentzschの記事です(ビデオで彼の声を聞くことができ、C4ビデオからそれを認識できます)。それはAppleのサイトでは行なわずにありますが、Appleによって書かれ維持されているという意味では「Appleのドキュメント」ではありません。 –
ドキュメントが嫌いですか?いくつかを書いてください。オープンソースのプロジェクトです。 – NSResponder