我對IOS非常新手的問題,應用程序...如果我創建一個新的查看基於應用程序調用TestForStackOverflow時,Xcode自動爲TestForStackOverflowAppDelegate.h創建這樣的代碼:您的應用程序委託集合以及初始化其窗口和viewController屬性的位置在哪裏?
@class TestForStackOverflowViewController;
@interface TestForStackOverflowAppDelegate : NSObject <UIApplicationDelegate>
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet TestForStackOverflowViewController *viewController;
@end
和TestForStackOverflowAppDelegate以下。 L:
#import "TestForStackOverflowAppDelegate.h"
#import "TestForStackOverflowViewController.h"
@implementation TestForStackOverflowAppDelegate
@synthesize window = _window;
@synthesize viewController = _viewController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;
}
[...]
來到這裏,我的問題:
1)哪裏是TestForStackOverflowAppDelegate類集合爲代表當前應用程序?它是否「自動」完成?我看到的main.m源文件只包含 下面的代碼:
int main(int argc, char *argv[])
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
難道不應該設置應用程序委託類在UIApplicationMain函數調用的第四個參數?
2)在哪裏設置了TestForStackOverflowAppDelegate類的window和viewController屬性? 3)這可能是微不足道的,但爲什麼我們有合成window = _window,而在TestForStackOverflowAppDelegate接口中沒有名爲_window的實例變量?我已經看到,你可以在類接口中聲明@properties而沒有相應的iVars(也許它們是由編譯器自動創建的),但是這是一種好的做法,還是應該總是在類中創建相應的iVars?
對不起,我只是希望我沒有寫出太明顯的問題,因爲在意大利這裏是深夜,我很累..但是當這些問題進入我的腦海時,我可以「T等待解決方案:)
好的...我已經檢查了MainWindow.xib文件,它被引用爲plist文件中的主要NIB文件,並且我已經看到它有一些定義在其中的對象,例如TestForStackOverflow App Delegate和TestForStackOverflow View Controller。 。我明白它們已連接到相應的類,但是這無法從檢查器中看出:檢查器引用TestForStackOverflow應用程序委託並從不TestForStackOverflowAppDelegate類。只有打開MainWindow時才能看到對「真實」類的引用.xib文件作爲一個XML文件..順便說一句,我已經瞭解魔術發生的地方:) –
只是另一個疑問......當我創建一個HelloWorld基於視圖的應用程序時,自動創建的MainWindow.xib文件僅用於指向你的App Delegate和View Controller類的目的,對嗎?它不是用來繪製你的應用程序的界面,因爲你有這個HelloWorldViewController.xib文件,或者我錯過了什麼?我明白這些可能是顯而易見的問題,但我試圖將拼圖的所有部分放在一起:) –
在MainWindow.xib中,應用程序委託(在該行下方)的實例具有viewController的視圖控制器目標子類和被添加的xib。所以在這種情況下,主窗口僅用於加載。從UIViewController繼承的MainWindow.m/h可能已被添加,並且可能已成爲目標ViewController。但是... – bryanmac