在main()中对argv所做的更改将在applicationDidFinishLaunching中丢失

时间:2014-02-05 00:12:09

标签: main argv

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]所做的更改。 ?。为什么?

1 个答案:

答案 0 :(得分:0)

根据apple doc

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

这就是为什么即使你在main中对argv进行更改,也不会反映在applicationDidFinishLaunching中