0

初め、

 + (void)allOpenRequestsWithBlock:(void (^)(NSArray *requests, NSError *error))block 

誰かがこのメソッドのセマンティクスが何であるかを詳細に説明できますか?プラス記号とマイナス記号は何ですか。
誰かが(void(^)(NSArray * requests、NSError * error))ブロックを説明できますか?リクエストとエラーを保持するのは無効なブロックですか?

このコード行:

 [[AFChangeRequestAPIClient sharedClient] getPath:@"example.json" parameters:[NSDictionary      dictionaryWithObject:@"false" forKey:@"include_entities"] success:^(AFHTTPRequestOperation *operation, id JSON) 

これは、上記のパラメーターを持つget Pathメソッドを呼び出していますか?辞書は、include_entities / falseの1つのキー/値だけで渡されますか?成功ブロックの部分はどういう意味ですか?戻り値ですか?

私は基本的にAFNetworkingフレームワークを理解しようとしていますが、慣れていない構文を使用しているようです。

ありがとう!アラン

4

2 に答える 2

3

これは非常に大きな質問です。単に例を挙げて言語を学ぶことを期待するべきではありません。先に進む前に、まずAppleのドキュメントにあるObjective-C言語の概要を読む必要があります。質問をすることで、あなたはすべてを同時に理解しようとしているように見えますが、言語自体の基本を知らないようです。これは言語を学ぶための良いアプローチではありません。

とにかくあなたの質問に答えるには:

  • +記号は、それがクラスメソッドであることを意味します。-記号は、インスタンスメソッドであることを意味します。
  • メソッドのセマンティクスは- (returntype)methodName:(type1)param1 nameContinuation:(type2)param2 ;-ここではインスタンスメソッドであることを意味し、戻り型はですreturntype。メソッドには名前がmethodName:nameContinuation:あり、2つのパラメーターがあります。1つは変数でtype1識別されるタイプで、もう1param1つは変数で識別されるタイプtype2です。param2
  • + (void)allOpenRequestsWithBlock:(void (^)(NSArray *requests, NSError *error))block シンタックスでは、はvoid(^)(NSArray* requests, NSError* error)、最初のパラメータのタイプです。このタイプは、Objective-Cブロックを記述します。これは、関数ポインターに非常に似ていますが、クロージャー(および変数のキャプチャー)を可能にします。ブロックの詳細については、Appleの専用ドキュメントをもう一度お読みください

2番目の質問では、メソッド呼び出しが完了しておらず、ブロック本体が欠落しています。

[[AFChangeRequestAPIClient sharedClient] getPath:@"example.json"
                                      parameters:[NSDictionary dictionaryWithObject:@"false" forKey:@"include_entities"]
                                         success:^(AFHTTPRequestOperation *operation, id JSON)
 {
   /* block body here */
 }];

getPath:parameters:success:これにより、によって返されるオブジェクトのメソッドが呼び出されます[AFChangeRequestAPIClient sharedClient](したがって、これは上記とまったく同じメソッドではありません)。このメソッドには3つのパラメーターが渡されます。最初のパラメーターは、1つ@"example.json"だけNSDictionaryのキーと値のペアを含み、最後のパラメーターはObjetive-Cブロックです。このブロックは、それぞれタイプAFHTTPRequestOperationとの2つのパラメーターを取りますid

繰り返しになりますが、基本(インスタンスとクラスのメソッド、メソッドの基本的な言語構文など)を理解する前に、学習が速すぎて高度なもの(ブロックとその構文など)を使用しようとしているようです。時間をかけて物事を学びましょう。1日で家を建てることはありません。さらに重要なのは、屋根の前に土台を建てることです;)

于 2012-09-21T13:09:30.000 に答える
1

プラス記号はクラスレベルのメソッドを示し、マイナス記号はインスタンスメソッドを意味します。

ブロックは関数に似ています。そのブロックには2つのパラメーター(anNSArray*とan NSError*)があり、'は'を返しますvoid

2番目の質問については、完全に答えることはできません。

私はそのフレームワークを知りません、そしてあなたはコードの行を投稿します、しかしその行は何かが欠けています(少なくともブロック本体はそこにありません)。

于 2012-09-21T13:10:41.213 に答える