@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属性?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)