objective-c – 您的应用程序代理设置在哪里,并初始化其窗口和viewController属性?

objective-c – 您的应用程序代理设置在哪里,并初始化其窗口和viewController属性?,第1张

概述我有一个非常新手的iOS应用程序的问题…如果我创建一个新的基于视图的应用程序称为TestForStackOverflow, Xcode自动为TestForStackOverflowAppDelegate.h创建这样的代码: @class TestForStackOverflowViewController;@interface TestForStackOverflowAppDelegate : 我有一个非常新手的iOS应用程序的问题…如果我创建一个新的基于视图的应用程序称为TestForStackOverflow,Xcode自动为TestForStackOverflowAppDelegate.h创建这样的代码:

@class TestForStackOverflowVIEwController;@interface TestForStackOverflowAppDelegate : NSObject <UIApplicationDelegate>@property (nonatomic,retain) IBOutlet UIWindow *window;@property (nonatomic,retain) IBOutlet TestForStackOverflowVIEwController *vIEwController;@end

以及TestForStackOverflowAppDelegate.m中的以下内容:

#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类的窗口和vIEwController属性在哪里设置?

3)这可能是微不足道的,但为什么我们合成了window = _window,而在TestForStackOverflowAppDelegate接口中没有名为_window的实例变量?我已经看到你可以声明@propertIEs,而没有相应的iVars在类接口(也许它们是由编译器自动创建的),但这是一个很好的做法,还是应该总是在你的类中创建相应的iVars?

请原谅我很长的信息,我只希望我没有写出一个太明显的问题,因为这里在意大利是深夜,我很累.但是当这些问题进入我的头脑,我迫不及待解决方案 :)

解决方法 如何加载app代表类?

在-info.pList文件中有一个名为“主要nib文件库名称”的键,并且有一个像MainWindow.xib的视图.在该xib文件中,有一个文件的所有者代理对象,它有一个委托设置为应用程序委托类.

在设计师中打开XIB.注意文件的所有者对象在顶部,上下文单击它并查看委托对象.现在看下面(XCode 4)行中的设计中的对象 – 你应该在那里看到应用程序委托对象.

appDelegate集合的窗口和vIEwController在哪里?

在设计器和上下文中单击(XCode 4)行下的应用程序委托对象.窗口和vIEwController目标被绑在那里.

_window iVar

它自动为您提供.不清楚我是否由编译器继承或生成.

_ iVars的更多内容
Why rename synthesized properties in iOS with leading underscores?

如果您选择在代码中执行等效代码:

删除pList xib参考
main.m:通过代表的名称

int main(int argc,char *argv[]){    int retVal = UIApplicationMain(argc,@"HellovIEwAppDelegate");

应用程式委托:

- (BOol)application:(UIApplication *)application dIDFinishLaunchingWithOptions:(NSDictionary *)launchOptions{    // OverrIDe point for customization after application launch.    CGRect screenBounds = [[UIScreen mainScreen] applicationFrame];    CGRect windowBounds = screenBounds;    windowBounds.origin.y = 0.0;    // init window    [self setwindow: [[UIWindow alloc] initWithFrame:screenBounds]];    // init vIEw controller    _mainVIEwController = [[MainVIEwController alloc] init];    [[self window] addSubvIEw:[_mainVIEwController vIEw]];    [self.window makeKeyAndVisible];    return YES;}
总结

以上是内存溢出为你收集整理的objective-c – 您的应用程序代理设置在哪里,并初始化其窗口和viewController属性?全部内容,希望文章能够帮你解决objective-c – 您的应用程序代理设置在哪里,并初始化其窗口和viewController属性?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1061824.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存