2012-09-01 49 views
9

アップルguidelineによると、それは混乱しているようです。方法JavaではviewWithTag目的Cコンベンション:使用する場合と使用する場合

のために、私は

getViewByTag // Java version, equivalent to viewWithTag in Obj-C 

と呼ばれる方法を持っているでしょう。しかし、私はまた、いくつかの方法がobjectForKeyなどがある見つけ、なぜだけではなく、objectWithKeyを使用していませんか?私の観察

から

getObjectByKey or just get // Java version, equivalent to objectForKey, 
          // but why not objectWithKey? Or not viewForKey above? 
+1

良い質問、btw。これは私が答えが必要でしたが、尋ねることは考えられなかった質問の1つです。そのことに関しては、自分自身にも尋ねることはありません。 – Mazyod

+0

AppleプログラマーFredは常に "for"を使用し、AppleプログラマーJimは常に "with"を使用しました。 –

答えて

3

オブジェクトを取得/設定しますが、あなたは WITH を使用しています。

設定中NSMutableArrayのオブジェクトの設定について

- (id)initWithCapacity:(NSUInteger)numItems 

は/オブジェクトのプロパティを取得し、あなたは FOR を使用しています。

e.g.Forタイプのプロパティの値を設定するNSMutableDictionary

- (void)setValue:(id)value forKey:(NSString *)key 

希望これはwithが直接オブジェクトに属するプロパティのために使用されているように思えあなたの疑問

+0

残念ながら、 'NSDictionary'のメソッドは' objectForKey: '' setObject:forKey: 'です。Objective-Cのプロパティの近くにはありません。 – Mazyod

3

をクリアするのに役立ちます。 UIViewtagのプロパティを持っていますので、viewWithTag:14と言い換えることができます。「タグプロパティが14のビューを見つける」

キーに関連付けられたオブジェクトを辞書に配置すると、このキーは必ずしもオブジェクト自体の一部ではありません。 objectForKey:@"foo"はfoo 『という「キーにリンクされているオブジェクトを探し、』 を言うための方法である。

+0

+1これは私がそれを記述する方法です。 'with'は渡された値がターゲットオブジェクトのプロパティであることを意味し、' for'は渡された値がターゲットオブジェクトに環境的に関連していることを意味します。 –

5

私は実際にはほとんど答えが何を考えよりもはるかに簡単だと思う。私はそれが複雑なプログラミング言語で行うことが少ないがあると思いますあなたがviewWithTag:を言うとき詳細、および問題のオブジェクトの一意性を行うことが多くを持っています。

、あなたはそのタグを持っているUIViewのための任意のビューを求めている。いくつかがあるかもしれません。UIViewは1を返します。 'のうち

Ho weer、objectForKey:(私にとっては)そのキーに関連付けられた単一のオブジェクト(またはnil)があるはずです。したがって、キーが存在し、単一のオブジェクトにバインドされています(強固に結合されています)。

EDIT:

さらに大会は、プログラミング言語の複雑さとは何の関係もありませんどのように意味「による」の存在に言及答えは、あります。それは単なる自然な英語です。

NSStringstringByAppendingString:は、例えば、関数はを追加動詞と書かれているという理由だけで、によって使用されます。あなたはwithAppendingと言うことができません、それは悪い英語です。

+1

このディスカッションでは「複数」という言葉を使いたいと思っています。それは最初に私の心に来た1つの単語であり、概念はこの答え(+1)で説明されています。 "by"はアクションを意味し、もう一つは単に選択を意味する。 –

+0

新しい編集は人々の文法と非技術的なことを教えています..いくつかの[その他](http://english.stackexchange.com/?as=1)フォーラムを選択してください –

0

アップルのガイドラインでは、forまたはforのどちらを使用するかについてのそのような主張は行いません。コーディング規約のポイントは、引数のタイプが何であるかを示し、自然なサウンドであるメソッドシグネチャを書き込むことです。

メソッド名のforまたはwithを使用する理由は、メソッドの最初のパラメータの型または目的を識別して、メソッドの読み込みに役立ちます。

Apple自身がいくつかの規則を使用していますが、それが基本的な目的です。メソッド名の中の最初のパラメータをforまたはwithで識別しようとするのは間違いありません。

アップルの規約の通り、実際の規約の一部ではないので、いつ取得するのかを尋ねることができます。

http://cocoadevcentral.com/articles/000082.php

もNSURL urlByAppendingPathComponentなど(で)を忘れてはいけない、これを読んで - 、それの感触を取得し、あなたは文句を言わないあなたはパラメータが所有しているか、所有されたときに、「で」使う間違った

0

を行きます"with"という単語の左にあるオブジェクトによって比較的永続的な属性になります。

  • initWithCapacity/arrayWithCapacity - (あなたが最初の容量を超えてそれにオブジェクトを追加するまで)容量が

  • viewWithTagと呼ばれているコンテナオブジェクトの属性となり、比較的永続的になります - ビューを返します指定された「タグ」属性を「有する」。

あなたは「のために」を使用に対し「所望」オブジェクトと、あなたはそれを取得するために使用する「トークン」オブジェクト間の緩いの関連を示すために。 - objectForKey/attributeForValue - 通常、 "オブジェクト"はキーを所有していません。 - documentForWindow - ウィンドウはウィンドウコントローラが所有し、ドキュメントは所有しません。さらに、各文書に複数のウィンドウが存在する可能性があります。

しかし、単一のメソッド呼び出し内の同じタイプの複数の オブジェクトの緩い団体のために、それはあなたのようなものを使用することを慣例だ:

doSomethingForFoo:withThisOtherFoo:havingYetAnotherFoo: 

だから、このような複雑な呼び出しのための順序は次のとおりです。

を持つ
  • ため
  • 関連する問題