C# では、次のような using ステートメントを記述できます。
using (SqlConnection connection = new SqlConnection("connectionString"))
{
...
}
これにより、接続オブジェクトがスコープ外になると確実に破棄されます。Objective-C内でこれを行う方法があるかどうか疑問に思っています。私は基本的に、複数のソケットを開いたままにする接続プールを持っています。使用するたびに接続を開いたり閉じたりする必要はありません。接続プールに浸り、開いている接続を取得 (または必要に応じて新しい接続を作成)接続が完了したら、接続を解放してプールに戻します。現在、私の Objective-C コードは次のようになっています。
MyConnection * connection = [ConnectionPool ConnectionWithDetails: @"host/server/port/etc"];
[connection doSomething];
[ConnectionPool ReleaseConnection: connection];
したがって、何らかの理由でReleaseConnection
が呼び出されない場合、接続はぶら下がっているだけです (最終的には解放されますが、プールには戻りません)。
基本的に、 を呼び出す必要をなくす方法を探していますReleaseConnection
。私はいくつかの研究を行ってきましたが、これまでのところ私は乾いています。