है कि कैसे मैं यह किया एन्कोडिंग:, मैं आधारित एक ही विधि का उदाहरण दिया, जिसमें वर्ग पर
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]
के बजाय के बाद से हम करेंगे एक प्रतिनिधि की जरूरत है। और इसे सिंगलटन न बनाएं, इसलिए प्रत्येक कनेक्शन में इसके स्वतंत्र चर होते हैं, क्योंकि, यदि हम नहीं करते हैं, और दूसरे कनेक्शन से पहले दो कनेक्शन बुलाए जाते हैं, तो प्राप्त डेटा और लूपों के हैंडलिंग को अप्रत्याशित रूप से अंतःस्थापित किया जाएगा ।
[[ClassNameHere new] sendSynchronousRequest:request returningResponse:&response error:&error]
इस तरह मैं एक NSUrl कनेक्शन बनाने और इसे संभाल कर सकते हैं (एक तुल्यकालिक रास्ते में, हम कैसे देखेंगे) तो मैं पहले से लिखा कोड के किसी भी बदलने की जरूरत नहीं है।
- (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse *__strong*)response error:(NSError *__strong*)error
{
_finishedLoading=NO;
_receivedData=[NSMutableData new];
_error=error;
_response=response;
NSURLConnection*con=[NSURLConnection connectionWithRequest:request delegate:self];
[con start];
CFRunLoopRun();
return _receivedData;
}
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {
return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{
//handle the challenge
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
*_response=response;
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
[_receivedData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
*_error=error;
CFRunLoopStop(CFRunLoopGetCurrent());
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
CFRunLoopStop(CFRunLoopGetCurrent());
}
चाल CFRunLoopRun() और CFRunLoopStop में था (CFRunLoopGetCurrent()) मुझे आशा है कि यह futur में किसी और में मदद करता है।
प्रतिनिधि को https चुनौती – LolaRun
का जवाब देने के लिए प्रतिनिधि को प्रदान करने के लिए व्यक्ति को एक आवृत्ति निर्भर फ़ंक्शन कॉल की आवश्यकता है :) यह बहुत आसान है। –