【问题标题】:Changes made to argv in main() are lost in applicationDidFinishLaunching在 main() 中对 argv 所做的更改在 applicationDidFinishLaunching 中丢失
【发布时间】:2014-03-01 05:35:25
【问题描述】:
int main(int argc, char *argv[])
{
    strncpy(argv[1], "fookBar", 7);

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

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application

    NSArray *args = [[NSProcessInfo processInfo] arguments];


}

applicationDidFinishLaunching 中的 args 数组不显示 main 中对 argv[1] 所做的更改。 ?.为什么?

【问题讨论】:

    标签: main argv


    【解决方案1】:

    根据apple doc

    “NSApplicationMain 本身忽略 argc 和 argv 参数。相反,Cocoa 通过 _NSGetArgv、_NSGetArgc 和 _NSGetEnviron 间接获取其参数(请参阅 )。”

    这就是为什么即使您在 main 中更改了 argv,它也不会反映在 applicationDidFinishLaunching 中

    【讨论】:

      猜你喜欢
      • 2014-05-21
      • 2023-04-11
      • 1970-01-01
      • 2015-07-03
      • 1970-01-01
      • 2011-01-07
      • 2011-06-17
      • 2019-08-31
      • 1970-01-01
      相关资源
      最近更新 更多