當您在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