これは非常に大きな質問です。単に例を挙げて言語を学ぶことを期待するべきではありません。先に進む前に、まず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日で家を建てることはありません。さらに重要なのは、屋根の前に土台を建てることです;)