経験豊富な開発者が手がけたiPhoneアプリを開発しています。私は単なる見習いプログラマーであり、実用的な Objective-C/iOS アプリケーション開発にまだ苦労しています (Java と PHP を独学で学びましたが、objective-c は私にとってこれらのようなものではありません)。
私たちのアプリは、サーバー側の操作に大きく依存し、毎回頻繁に http ポスト要求を行う (ユーザーの場所の追跡、他のユーザーにメッセージを送信するなど)。
このアプリの開発を任されたとき、コード内で、すべての HTTP リクエストが各メソッド内に記述されていることに気付きました。各リクエストは別のスレッドをディスパッチすることによって行われ、それに応じてそれらのリクエストの応答に対して各アクションが記述されました。
例えば
-(void) methodA {
// Making http request headers...
// Dispatch another thread
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0);
dispatch_async(queue, ^{
// Send synchronous request and handle the response...
});
}
-(void) methodB {
// Making http request headers...
// Dispatch another thread
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT , 0);
dispatch_async(queue, ^{
// Send synchronous request and handle the response...
});
}
上記のようなコードは、アプリがサーバーにリクエストを送信する必要があるすべての場所にあります。
なぜ彼は http リクエストを処理するクラスを作成しなかったのか疑問に思っています。
Java では、サーバーに同期要求を行うクラスを作成できます。
public class ClassHttpRequest {
public int makePost {
// Send synchronous request and return result...
}
}
次に、このクラスのインスタンスを作成し、そのインスタンス メソッド (この場合は makePost) をスレッド内で実行します。
public class methodA {
Thread t = new Thread(new Runnable() {
public void run() {
public ClassHttpRequest requestHandler = new ClassHttpRequest();
if (success == requestHandler.makePost()) {
// Handle response...
}
}
}
});
t.start();
}
クラスを作成し、Objective-C で頻繁な http 要求を処理できるようにする際に、パフォーマンスの低下や問題はありますか? それとも、単に「推奨」されていないだけですか?Objective-C では、例外処理に try-catch ステートメントを使用することは、多くのリソースを消費するため、一般的ではないと聞いています。私はいくつかの iOS および Objective-C の本を読んだ (そしてググった) ことはありますが、実際のアプリケーション開発のためのそのような「実用的な」答えを見つけるのは難しく、ほとんどの場合、私のような初心者にとってはややこしいものです。
なぜそのようなクラスを作らなかったのか彼に尋ねなければなりませんが、彼は今不在で連絡が取れませんでした。また、stackoverflow の専門家は、前任者よりもはるかに正確で簡潔なソリューションを提供してくれると信じています。(私はいくつかの質問をしましたが、知りたいことはすでにわかっています。)
前もって感謝します。