Note that there are some explanatory texts on larger screens.

plurals
  1. PONSTask waitUntilExit hanging app on jailbroken iOS
    primarykey
    data
    text
    <p>So I've got NSTask to run a script which generates a list of something, into a txt, which I read from. But if I use my current code (below), the alert pops up before the NSTask is finished, thus resulting in a blank alert. I've tried <code>waitUntilExit</code> but that makes the button that invokes this action freeze, but the UI doesn't lock up itself.</p> <pre><code>- (void) runSupported { stask = [[NSTask alloc] init]; [stask setLaunchPath:@"/bin/bash"]; NSString *script; script = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/apps.sh"]; NSArray *sargs = [NSArray arrayWithObjects:script, @"-txt", nil]; [stask setArguments: sargs]; [stask launch]; NSString *apps; apps = [NSString stringWithContentsOfFile:@"/var/mobile/supported.txt" encoding:NSUTF8StringEncoding error:nil]; NSFileManager *fm = [NSFileManager defaultManager]; if ([fm fileExistsAtPath:apps]) { UIAlertView *supported = [[UIAlertView alloc] initWithTitle:@"App List" message:apps delegate:self cancelButtonTitle:@"Ok!" otherButtonTitles:nil]; [supported show]; [supported release]; } else { UIAlertView *supported = [[UIAlertView alloc] initWithTitle:@"App List" message:@"Error generating list." delegate:self cancelButtonTitle:@"Ok!" otherButtonTitles:nil]; [supported show]; [supported release]; } } </code></pre> <p>Any idea how I'd have the NSTask finish before invoking the alert? Thanks.</p> <p>Edit: Code with NSNotification:</p> <pre><code>-(IBAction) supported { stask = [[NSTask alloc] init]; [stask setLaunchPath:@"/bin/bash"]; NSString *script; script = [[[NSBundle mainBundle] bundlePath] stringByAppendingString:@"/apps.sh"]; NSArray *sargs = [NSArray arrayWithObjects:script, @"-txt", nil]; [stask setArguments: sargs]; [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(taskEnded:) name: NSTaskDidTerminateNotification object: nil]; [stask launch]; } - (void)taskEnded:(NSNotification *)notification { if (stask == [[notification object] terminationStatus]) { NSString *apps; apps = [NSString stringWithContentsOfFile:@"/var/mobile/supported.txt" encoding:NSUTF8StringEncoding error:nil]; NSFileManager *fm = [NSFileManager defaultManager]; if ([fm fileExistsAtPath:apps]) { UIAlertView *supported = [[UIAlertView alloc] initWithTitle:@"Apps" message:apps delegate:self cancelButtonTitle:@"Ok!" otherButtonTitles:nil]; [supported show]; [supported release]; } else { UIAlertView *supported = [[UIAlertView alloc] initWithTitle:@"Apps" message:@"Error generating list." delegate:self cancelButtonTitle:@"Ok!" otherButtonTitles:nil]; [supported show]; [supported release]; } } else { NSLog(@"Task failed."); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload