当您在xCode中创建一个默认的iPhone OS项目时,您在xCode侧面板的“其他源”中有一个main.m。那里的int main()如何使用argc和argv,它为什么需要它?iOS如何使用argc和argv?
谢谢:)
当您在xCode中创建一个默认的iPhone OS项目时,您在xCode侧面板的“其他源”中有一个main.m。那里的int main()如何使用argc和argv,它为什么需要它?iOS如何使用argc和argv?
谢谢:)
我认为他们是可用的,只是因为编译器使用它们,但在iOS的情况下都只是无用的,因为有没有直接的方式来动态地添加的参数在iPhone上的应用程序调用。或者至少我想..
打开您的可执行文件的信息。在参数选项卡中有arguments to be passed on launch:
。如果你添加了一些东西,它会传递给你的应用程序。
Apple创建了一些你放在那里的参数,它们改变了应用程序的行为。例如,如果使用coredata,-com.apple.CoreData.SQLDebug 1
将打印一些sql调试消息。我敢肯定有更多的调试参数
int count;
for (count = 0; count < argc; count++)
{
NSLog(@"argv[%d] = %s\n", count, argv[count]);
}
编辑:这些参数只用于如果你用xcode启动应用程序。
这仅仅是一个Objective-C的是C.
的超集,在Mac OS X中的表现,你可以通过从终端,称其如(可能不工作使用这个参数传递给应用程序):
/Applications/iTunes.app/Contents/MacOS/iTunes my args to application
在iOS上,不可能从命令行启动应用程序。
这就是我的想法。所以他们在项目中没有做任何事情,他们只是在默认情况下? – Tim 2010-10-15 14:46:34
的argc和argv参数包含 传递给 从应用程序中的任何启动时参数系统。这些 参数由UIKit 基础结构进行分析,否则可能会被忽略 。
基本上UIApplicationMain()
创建一个单独UIApplication
对象这也是左撇子,你的应用程序代理对象。他们没有在文档中指定初始化协议,但它听起来像在某种初始化过程中将argc/argv传递给UIApplication,然后UIApplication解析它们并将它们转换为可通过UIApplication访问的信息(可能是启动选项)。
在任何情况下,argc/argv都非常适合iOS应用程序中的系统使用。系统似乎使用它们将内容传递给UIApplication,实质上是。
EDIT
作为一个实验,我插在我main()函数如下:
for (int i; i < argc; i++)
NSLog(@"%s", argv[i]);
当我在它只是印刷一个 “参数” 模拟器启动它(的argv [ 0])这是应用程序的路径。
我怀疑如果你把它放在这里并启动一个注册URL处理程序的应用程序,或者由于本地通知或其他系统事件而打开,那么你会看到URL或任何与应用程序打开方式有关的选项。然而你是不是应该自己解析argc/argv []!使用提供给UIApplicationDelegate application:didFinishLaunchingWithOptions:
方法的应用程序启动选项。
我刚刚检查过,当我的应用程序通过“open in”启动时,没有参数传递给应用程序。 – 2010-10-15 15:33:48
噢,我想我的猜测是错误的。我很好奇,你有没有像-com.apple.CoreData.SQLDebug这样的有效调试选项的完整列表?我不知道这个人存在,它可能会派上用场。 – Nimrod 2010-10-15 15:38:09
嗯,有趣的想法。好的,谢谢你的回应。我希望有人有更多的见解。再次感谢! – Tim 2010-10-15 14:36:04