我对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