さて、基本的にスクリプトのGUIであるアプリを作成しようとしていますが、正しく機能しない部分は、最初はスクリプトの出力を表示しているので、タスクが完了した後はすべてが表示されます。言うまでもなく、ダメです。私が今いるところは、uitextviewでリアルタイムに出力を取得できますが、新しい情報が何回にもわたって配信されて読めなくなっているため、この例ではスクリプトapt-getupdateを使用しています。私は新しい脱獄開発者です。はい、root権限でアプリを実行しています。唯一の問題は出力です...私のコードは次のとおりです。
#import "RootViewController.h"
@implementation RootViewController
@synthesize navItem;
- (void)loadView {
self.view = [[[UIView alloc] initWithFrame: [[UIScreen mainScreen] applicationFrame]] autorelease];
self.view.backgroundColor = [UIColor redColor];
navBar = [[UINavigationBar alloc] init];
navBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
navItem = [[[UINavigationItem alloc]
initWithTitle:@"GUI"] autorelease];
navBar.barStyle = UIBarStyleDefault;
navBar.items = [NSArray arrayWithObject:navItem];
[self.view addSubview:navBar];
NSPipe *pipe = [NSPipe pipe];
_fileHandle = [pipe fileHandleForReading];
[_fileHandle readInBackgroundAndNotify];
task = [[NSTask alloc] init];
[task setLaunchPath:@"/usr/bin/apt-get"];
[task setStandardOutput: pipe];
[task setStandardError: pipe];
NSArray *arguments;
arguments = [NSArray arrayWithObjects: @"update", nil];
[task setArguments: arguments];
[task launch];
}
-(id)init
{
[super init];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector( readPipe: )
name:NSFileHandleReadCompletionNotification
object:nil];
return self;
}
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
-(void)readPipe: (NSNotification *)notification
{
NSData *data;
NSString *text;
if( [notification object] != _fileHandle )
return;
data = [[notification userInfo] objectForKey:NSFileHandleNotificationDataItem];
text = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
navItem.title = text;
titleTextField = [[UITextView alloc] initWithFrame: CGRectMake(0, 40, 320, 350)];
[titleTextField setBackgroundColor:[UIColor clearColor]];
titleTextField.text = text;
titleTextField.editable = YES;
titleTextField.scrollEnabled = YES;
titleTextField.autoresizingMask =UIViewAutoresizingFlexibleHeight;
[self.view addSubview: titleTextField];
[text release];
if( task )
[_fileHandle readInBackgroundAndNotify];
}
@end