gpt4 book ai didi

cocoa - 有没有更好的方法从 GUI 或命令行启动相同的应用程序

转载 作者:行者123 更新时间:2023-12-03 16:44:37 25 4
gpt4 key购买 nike

我找到了一种运行 Cocoa (GUI) 应用程序的方法。从正常的双击它,或者从 CLI。

我意识到,当应用程序通过双击 (GUI) 启动时,它会返回 2 的参数计数 (argc)。

但是当从 CLI 启动时,它的 argc 将为 1。只要我自己不输入任何参数。

这意味着我可以使用 if.. else.. 来确定应用程序是如何启动的。

这对于我的应用程序来说效果很好,因为我不需要输入参数。

但我想知道是否有更好的方法。

以下是 main.m

中的代码示例
int main (int argc, const char * argv[]) {

NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
//This determins if the app is launched from the command line or app itself is opened.

if (argc == 1) {
//app was run from CLI
// Create a object
MyClass *mMyClass;
mMyClass = [[MyClass alloc] init];
// Read the Buffer
[mMyClass readBuffer];

// Write out file on disk
[mMyClass createFile];
[mMyClass doMoreStuff];

[mMyClass release];
mMyClass = nil;

return 0;
} else {

//app was doubled click, (Opened)

return NSApplicationMain(argc, (const char **) argv);

;
// */
// return NSApplicationMain(argc, (const char **) argv);
}
[pool drain];
}

非常感谢。中号

最佳答案

除了检查 argc 之外,您可能还需要考虑检查 argv 值本身。

对于通过双击运行的应用程序:

1/4/11 9:43:30 AM   Untitled[605]   argc: 2
1/4/11 9:43:30 AM Untitled[605] argv0: /tmp/Untitled/build/Debug/Untitled.app/Contents/MacOS/Untitled
1/4/11 9:43:30 AM Untitled[605] argv1: -psn_0_131104

对于在命令行中运行的应用:

1/4/11 9:43:44 AM   Untitled[608]   argc: 1
1/4/11 9:43:44 AM Untitled[608] argv0: ./Untitled
1/4/11 9:43:44 AM Untitled[608] argv1: (null)

关于cocoa - 有没有更好的方法从 GUI 或命令行启动相同的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4586899/

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