gpt4 book ai didi

objective-c - (Mac) 创建执行 shell 脚本的 Xcode 应用程序

转载 作者:行者123 更新时间:2023-12-03 16:50:10 28 4
gpt4 key购买 nike

这似乎是我想要完成的一件简单的事情,远低于 Xcode/Interface Builder 的能力。我搜索了又搜索,但没有找到答案,但大多数搜索都将我带到这里,所以我创建了一个帐户来询问专家。我想创建一个非常简单的 GUI,它有四到五个按钮,每个按钮执行一个简单的 shell 脚本,终端窗口不是必需的,但如果是这样的话,我可以接受一个开始。除了 shell 脚本之外,我还需要在应用程序中安装 adb(Android 调试桥)和 fastboot 实用程序。我假设我需要将 adb 和 fastboot 以及其他文件放在 Resources 文件夹中,我还假设我需要将 shell 脚本放在 Classes 文件夹中。我真的只需要知道如何将按钮连接到脚本,我希望这只是我忽略的简单事情。提前致谢。

MacBook Pro 7,1操作系统 10.6.8Xcode 3.2.6

最佳答案

试试这个:

- (void)runCmd:(NSString *)cmd withArgs:(NSArray *)args
{
if (task)
{
[task interrupt];

}
else
{
task = [[NSTask alloc] init];
[task setLaunchPath:cmd];

[task setArguments:args];

[pipe release];

pipe = [[NSPipe alloc] init];
[task setStandardOutput:pipe];

NSFileHandle* fh = [pipe fileHandleForReading];

NSNotificationCenter* nc;

nc = [NSNotificationCenter defaultCenter];
[nc removeObserver:self];
[nc addObserver:self
selector:@selector(dataReady:)
name:NSFileHandleReadCompletionNotification
object:fh];
[nc addObserver:self selector:@selector(dataAvailable:) name:NSFileHandleDataAvailableNotification object:fh];
[nc addObserver:self
selector:@selector(taskTerminated:)
name:NSTaskDidTerminateNotification
object:task];

[task launch];
[fh readInBackgroundAndNotify];
}
}

- (void)dataAvailable:(NSNotification*)n
{
NSLog(@"Data Available : %@",n);
}

- (void)dataReady:(NSNotification*)n
{
NSData* d;

d = [[n userInfo] valueForKey:NSFileHandleNotificationDataItem];

if ([d length])
{
NSLog(@"Data Ready : %@",[[NSString alloc] initWithData:d encoding:NSUTF8StringEncoding]);
[[[task standardOutput] fileHandleForReading] readInBackgroundAndNotify];
}
}

- (void) taskTerminated:(NSNotification*)note
{
[task release];
task = nil;
}

关于objective-c - (Mac) 创建执行 shell 脚本的 Xcode 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10082162/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com