我想更好地瞭解中包含的一個基本的iOS應用程序的每個文件的用途。是否有任何理由修改iOS應用程序中的main.m文件?
是否有任何理由修改main.m文件?我想知道這個文件是否需要被觸及。如果你修改它,爲什麼?
我想更好地瞭解中包含的一個基本的iOS應用程序的每個文件的用途。是否有任何理由修改iOS應用程序中的main.m文件?
是否有任何理由修改main.m文件?我想知道這個文件是否需要被觸及。如果你修改它,爲什麼?
在所有病例的99.9%中,沒有必要觸摸main.m
。
在另外的0.1%中,您可能需要將呼叫的參數更改爲UIApplicationMain()
函數。該函數的最後兩個參數指定代表主應用程序的類的名稱(默認爲UIApplication
)和應用程序委託。
如果您決定子類UIApplication
,您可以將第三個參數設置爲您的子類名稱。如果您想截取您的應用處理的某些事件(覆蓋sendEvent:
),子類UIApplication
可能會很有用。
如果您只是決定重命名該類,則您的應用程序委託類的名稱可能會更改。另外,如果UIApplicationMain()
的第四個參數是nil
(這是在iOS 5中未使用Storyboarding的項目模板中的默認值),則表示您在應用程序的主要NIB文件中創建了您的應用程序委託對象。如果你決定改變這個決定(例如,爲了適應現有項目的Storyboarding),你將不得不改變第四個參數來告訴UIApplicationMain()
它應該實例化的類的名字。
我認爲有800,000個應用程序。 .1%是800!可能是正確的。 – Fattie
一般來說,你不需要觸摸main.m文件。這是所有樣板代碼。任何初始化通常在您的應用程序委託中完成。
在某些情況下,您可能需要修改此文件。默認情況下,iOS開發模板假設你將使用Interface Builder來提供你的初始界面,並在下面用零值作爲最後一個參數的情況下這樣做UIApplicationMain()
,如:
return UIApplicationMain(argc, argv, nil, nil);
如果您希望以編程方式contruct你的界面,您可能需要使用最後一個參數指定您的應用程序委託類:
return UIApplicationMain(argc, argv, nil, NSStringFromClass([SPAppDelegate class]));
這是爲了讓應用程序知道在哪裏可以構建你的界面開始。使用Interface Builder構建一個,您可以通過您的Info.plist鍵之一來指示要使用哪個IB文件作爲基礎。
如果你之前自動引用計數創建一個main.m文件,你可能有一個包裝此功能的明確NSAutoreleasePool:
NSAutoreleasePool *pool = [NSAutoreleasePool new];
int retval = UIApplicationMain(argc, argv, nil, NSStringFromClass([SPAppDelegate class]));
[pool release];
return retval;
根據ARC,這將被轉換爲@autoreleasepool
:
@autoreleasepool {
int retVal = UIApplicationMain(argc, argv, nil,NSStringFromClass([SPAppDelegate class]));
return retVal;
}
這是我以任何方式編輯main.m文件的唯一兩種情況。
非常明確的問題。歡迎來到堆棧溢出! –