0
私は数秒ごとにHTTPリクエストを実行する(swift 2で)関数を書いています。 私はこれらの要求をスケジュールするためにタイマーを使用しています。すぐにNSURLSessionでスレッドを再利用する
問題は、各要求が新しいスレッドを使用するため、数分後に私は完了した直後に閉じられた多くのスレッドを使用しましたが、このジョブを実行するスレッドを使用することを好みます。
機能は次のとおりです。
func getStatus()
{
let strUrl:String = MY_URL;
let url = NSURL(string:strUrl);
let defaultSession = NSURLSession(configuration: NSURLSessionConfiguration.defaultSessionConfiguration(),);
var dataTask:NSURLSessionDataTask?
dataTask = defaultSession.dataTaskWithURL(url!)
{
data, response, error in
if let error = error
{
print(error.localizedDescription);
}
else if let httpresponse = response as? NSHTTPURLResponse
{
if httpresponse.statusCode == 200
{
self.getDataFromJson(data);
}
}
}
dataTask?.resume();
myTimer = NSTimer.scheduledTimerWithTimeInterval(retryInterval,
target: self,
selector: #selector(getStatus),
userInfo: nil,
repeats: false);
}
そのための正しい方法は何ですか?
ありがとうございます!
ありがとうございます!私はスレッドの詳細(NSThread.currentThread())を表示し、スレッドの数はまだ増加しています、私はいつも同じスレッドを使用したいです....それは動作しませんでした:( – kande
あなたは "詳細は? 'dataTaskWithURL'クロージャー内、または(' getStatus'内の)外側 –
「else if let httpresponse = response ...」の直後にクロージャーの内側に出力されます: {number = 17 、name =(null)}、数秒後には18,19,20など... –
kande