मैं एनएसटीस्क का उपयोग कर रहा हूं, लेकिन जब मैं कार्य को लॉन्च करता हूं तो यह मुख्य धागा को ब्लॉक करता है (इसलिए मैं इसे अपडेट नहीं कर सकता) जब तक कि कार्य समाप्त नहीं हो जाता। यह मेरा कोड है:एनएसटीस्क मुख्य धागे को अवरुद्ध कर रहा है
NSString *hostsforping = @"google.es";
pingdata = [[NSTask alloc] init];
[pingdata setLaunchPath: @"/sbin/ping"];
NSArray *pingargs;
pingargs = [NSArray arrayWithObjects: @"-c 5", hostsforping, nil];
[pingdata setArguments: pingargs];
NSPipe *pingpipe;
pingpipe = [NSPipe pipe];
[pingdata setStandardOutput: pingpipe];
NSFileHandle *pingfile;
pingfile = [pingpipe fileHandleForReading];
[pingdata launch];
NSData *pingdata1;
pingdata1 = [pingfile readDataToEndOfFile];
NSString *pingstring;
pingstring = [[NSString alloc] initWithData: pingdata1 encoding: NSUTF8StringEncoding];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(taskDidTerminate:)
name:NSTaskDidTerminateNotification
object:nil];
}
- (void) taskDidTerminate:(NSNotification *)notification {
NSLog(@"end");
}
मैं पढ़ रहा है -waitUntilExit
मुख्य थ्रेड ब्लॉक करता है, लेकिन मैं इसे का उपयोग नहीं करते, तो मैं मैं गलत क्या कर रही हूं पता नहीं है।
या, एक readabilityHandler जो स्वचालित रूप से निष्पादित हो जाता है, जब आपके कार्य डेटा resp है का उपयोग करें। पाइप में कुछ लिखा है। –