में एनएसटीएचड नींद का उपयोग करना कुछ कोड के साथ काम करना, मैं रन लूप में आ रहा हूं, जो मैं NSOperation
एस के अंदर नया हूं।एनएसओपरेशन
NSOperation
रों व्यस्त डाउनलोड डेटा कर रहे हैं - और जब वे व्यस्त हैं, वहाँ डाउनलोड पूर्ण होने की प्रतीक्षा करने के लिए NSRunLoop
और धागा नींद के रूप में, कोड है।
विशेष रूप से इस कोड मेरे लिए ब्याज की है:
while (aCertainConditionIsTrue && [self isCancelled]==NO) {
if(![[NSRunLoop currentRunLoop] runMode: NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:1.0]]){
[NSThread sleepForTimeInterval:1.0];
}
}
मैं रन छोरों के बारे में पढ़ा है, और runMode:beforeDate:
एक इनपुट स्रोत या टाइमआउट के लिए इंतजार करेंगे। हालांकि मैं 100% नहीं हूं जो इनपुट सॉस के रूप में गिना जाता है।
इसके पहले निष्पादन पर यह हमेशा नहीं लौटाता है और sleepForTimeInterval:
हिट करता है। क्या यह बुरा है?
किसी विशेष उपयोगिता वर्ग में, यह sleepForTimeInterval:
बहुत कुछ मार रहा है - एक बार प्रत्येक थ्रेड के लिए - जो प्रदर्शन को काफी नुकसान पहुंचाता है।
इसके लिए कोई बेहतर समाधान, या सलाह?