2012-04-17 14 views
5

मैं एक छोटे टाइमआउट के साथ डाउनलोड करना चाहता हूं, ताकि यह तेज़ हो और ऐप को खराब कनेक्शन पर क्रैश होने से रोका जा सके।डेटा के लिए टाइमआउट कैसे सेट करें WithContentsOfURL: url

- (void) CreateTitleView { 
    NSURL* url; 
    NSData* imageData; 
    imageData = [NSData dataWithContentsOfURL:url ]; 
    UIImage* image = [UIImage imageWithData:imageData]; 
} 

मैं उद्देश्य सी में अच्छा नहीं हूं, इसलिए मैं आपकी मदद के लिए पूछता हूं। धन्यवाद।

+0

शॉर्ट टाइमआउट आपके कनेक्शन को तेज़ी से नहीं बनाएगा! लेकिन NSURLConnection पर एक नज़र डालें। –

उत्तर

2

आप टाइमआउट सेट करके डाउनलोड की गति को नियंत्रित नहीं कर सकते हैं। इससे केवल यह नियंत्रित होगा कि डाउनलोड पर छोड़ने से पहले आपका एप्लिकेशन कितना इंतजार कर रहा था। पृष्ठभूमि में छवि डेटा लोड करने के लिए आपको अपने एप्लिकेशन को दोबारा प्रतिक्रिया देना चाहिए, ताकि यूआई डाउनलोड पूर्ण होने तक उत्तरदायी रहे।

NSURLConnection (sendAsynchronousRequest), या AFNetworking देखें।

+1

ठीक है। मुझे पता था कि कम टाइमआउट डाउनलोड तेज नहीं होगा। पहुंचने योग्य यूआरएल से डाउनलोड करने के बारे में, टाइमआउट सेट करने से कम से कम अनावश्यक डाउनलोड से बच सकते हैं। फिर आप '[NSData डेटा WithContentsOfURL: url]' पर टाइमआउट कैसे सेट कर सकते हैं? – Yeung

+0

@Yeung - आप afaik नहीं कर सकते हैं। ऐसे मामलों में जहां आपको किसी URL से डेटा पुनर्प्राप्त करने के लिए टाइमआउट सेटिंग को नियंत्रित करने में सक्षम होना आवश्यक है, ['NSURLConnection'] (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference से विधियों का उपयोग करें)/फाउंडेशन/क्लास /NSURLConnection_Class/Reference/Reference.html) इसके बजाए कक्षा। – Perception

9

इन दिनों, यह संभव है। एपीआई इस तरह है:

NSURLResponse* urlResponse; 
NSError* error; 
NSMutableURLRequest* urlRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20]; 
NSData* d = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&urlResponse error:&error]; 
संबंधित मुद्दे