iOS工程檔案main.m其實就是一個OC一個類的.m檔案,為什麼我們看到這個檔案的時候不能立刻知道這個檔案是一個OC類的.m檔案呢?
因為1.OC類一般首字母大寫
2.OC類一般都有.h檔案
先說在Xcode7.3建立工程裡的main.m檔案
#import <UIKit/UIKit.h>//載入UIKit架構裡的UIKit.h檔案,其實只為一個UIApplication.h裡的UIApplicationMain C語言函數
#import "AppDelegate.h"//載入AppDelegate.h檔案,其實只為一個OC方法NSStringFromClass需要的參數- -,個人感覺各種小題大做了
代碼如下 |
複製代碼 |
int main(int argc, char * argv[]) { @autoreleasepool { //根據控制台上列印的資訊可知: NSLog(@"argc = %d",argc);//int argc是 1 NSLog(@"argv[] count = %lu",sizeof(argv)/sizeof(argv[0]));//C char數組計數為1 NSLog(@"argv[0] = %s",argv[0]);//列印字串可知argv[0]是一個路徑 NSLog(@"bundlePath = %@",[NSBundle mainBundle].bundlePath);//和[NSBundle mainBundle].bundlePath列印的結果對比可知,argv[0] == [NSBundle mainBundle].bundlePath為真 //想深入瞭解argc,argv可參考以下網址 //http://wenku.baidu.com/link?url=xNNFYFd3kGS0fj79e_hKbQnnO6t_TIuBln8DMuNQ-k7OQyJ9uFtzy5hpPKcwKKU3Ck1EyacMg8ybrPmH5VtdUShsL_eM2NRqi0BJlgCl5dy return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));//UIApplicationMain返回一個int類型的數字,NSStringFromClass([AppDelegate class])其實這個方法傳回值就是一個NSString對象@"AppDelegate",完全可以直接寫成@"AppDelegate" } }
|
控制台資訊:
代碼如下 |
複製代碼 |
argc = 1 argv[] count = 1 argv[0] = /Library/Developer/CoreSimulator/Devices/EA9E0AE1-9EE8-4246-AA72-F39ED66FD2F7/data/Containers/Bundle/Application/AE119964-3712-4C12-8FA7-ACB8D663E59B/TestApp.app/TestApp bundlePath = /Library/Developer/CoreSimulator/Devices/EA9E0AE1-9EE8-4246-AA72-F39ED66FD2F7/data/Containers/Bundle/Application/AE119964-3712-4C12-8FA7-ACB8D663E59B/TestApp.app //省略部分個人資訊 |
超級精簡版main.m(測試可正常運行程式)
代碼如下 |
複製代碼 |
#import <UIKit/UIApplication.h> int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, @"AppDelegate"); } }
|