ios开发UI之windowsAndView(一)工程介绍


(一)窗口和视图的介绍我们在singleView工程里面.

首先我们介绍下这个工程下初始话之后的一些文件的用途

pastedGraphic.pdf

首先是项目,我们可以在项目这边可以设置一些(模拟机)设备的设置,设置一般包括库的导入.....

pastedGraphic_1.pdf

framworks 这个文件主要来放置导入的库;

products 放的是运行的可执行程序;

supportting files 放置的是一些配置文件和main.m等文件

pastedGraphic_2.pdf

windowAndView-prefix.pch 这个文件是一个与载入文件我们可以在里面做一些事;

比如:

        eum 枚举的初始化设定、条件选择编译等

下边是三张系统调用的图片

windowAndView-info.plist 可以添加一些info property list

比如icon file  应用程序的名字等

pastedGraphic_3.pdf

最上面的文件夹里放的是主要的文件,我们的编写的类和代码都会出现在这边的

如果我们要导入一些素材文件我们可以在这个文件夹下面创建一个Resourse来放素材


(二)接下来我们看下已经提供给我们的这些文件

      appDelegate这个文件是程序的主要的代理类

在main函数里设置了代理,就是appdelegate

return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]))

参考:

AppDelegate,其中NSObject表示它的“类”符合UIApplicationDelegate协议,接着UIApplicationDelegate,此方法为应用程序提供了关于触发的关键事件信息,例如什么时候程序运行完成,什么时候内存不足,什么时候重要变化发生 


看下appDelegate.m中是些函数


1、-  (void)applicationWillResignActive:(UIApplication *)application

说明:当应用程序将要入非活动状态执行,在此期间,应用程序不接收消息或事件,比如来电话了

2、-  (void)applicationDidBecomeActive:(UIApplication *)application

说明:当应用程序入活动状态执行,这个刚好跟上面那个方法相反

3、- (void)applicationDidEnterBackground:(UIApplication  *)application

说明:当程序被推送到后台的时候调用。所以要设置后台继续运行,则在这个函数里面设置即可

4、-  (void)applicationWillEnterForeground:(UIApplication *)application

说明:当程序从后台将要重新回到前台时候调用,这个刚好跟上面的那个方法相反。

5、-  (void)applicationWillTerminate:(UIApplication *)application

说明:当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作。这个需要要设置UIApplicationExitsOnSuspend的键值。

6、-  (void)applicationDidReceiveMemoryWarning:(UIApplication *)application

说明:iPhone设备只有有限的内存,如果为应用程序分配了太多内存操作系统会终止应用程序的运行,在终止前会执行这个方法,通常可以在这里进行内存清理工作防止程序被终止

7、- (void)applicationSignificantTimeChange:(UIApplication*)application

说明:当系统时间发生改变时执行

8、-  (void)applicationDidFinishLaunching:(UIApplication*)application

说明:当程序载入后执行

9、-  (void)application:(UIApplication)application  willChangeStatusBarFrame:(CGRect)newStatusBarFrame

说明:当StatusBar框将要变化时执行

10、-  (void)application:(UIApplication*)application willChangeStatusBarOrientation:

(UIInterfaceOrientation)newStatusBarOrientation

duration:(NSTimeInterval)duration

说明:当StatusBar框方向将要变化时执行

11、-  (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url

说明:当通过url执行

12、-  (void)application:(UIApplication*)application  didChangeStatusBarOrientation:(UIInterfaceOrientation)oldStatusBarOrientation

说明:当StatusBar框方向变化完成后执行

13、-  (void)application:(UIApplication*)application didChangeSetStatusBarFrame:(CGRect)oldStatusBarFrame

说明:当StatusBar框变化完成后执行





viewController这是一个uiviewController类,视图控制类。

这是工程提供的一个uiviewController,所以这个工程在初始化的时候就有了一个视图,

所以在appdelegate的didFinishLaunching的函数中有对self.window.rootViewController设置成这个;

在这个程序的末尾加上self.window makeKeyAndvisible;就可以看到视图

pastedGraphic_4.pdf


mvc模式

我们之后的程序都是在通过mvc模式主要的代码在model中,model中主要做的是数据的处理,view中主要设置的是视图,control主要作用是接受view的事件和数据,调用model来处理,并反馈给view,这就是mvc模式;


注意:我们以后的程序中必须要降低m-c之间的耦合度,这样才能充分的体现mvc的好处


在viewcontroller.m中我们继承UIviewcontroller的方法


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

接着会调用loadView方法来生成UIViewController.view

- (void)loadView

然后调用 viewDidLoad方法

- (void)viewDidLoad

如果loadView不能生成UIViewController.view系统将会反复调用loadView及viewDidLoad方法, 并且最终调用[super loadView] 方法返回UIViewController.view

然后依次调用如下2个方法, 这2个方法也十分重要, 在UINavigationController的POP操作后有时将要显示的UIViewController中的View并没有释放(也有可能释放掉) , UIViewController将不会调用上面的三个方法(initWithNibName,loadView,viewDidLoad) 而会调用下面这2个方法

- (void)viewWillAppear:(BOOL)animated;

- (void)viewDidAppear:(BOOL)animated;

在iOS5.0中还添加了2个函数:

- (void)viewWillLayoutSubviews ;

- (void)viewDidLayoutSubviews;

卸载过程

- (void)viewWillDisappear:(BOOL)animated;

- (void)viewDidDisappear:(BOOL)animated;

- (void)viewWillUnload;//iOS5.0添加

- (void)viewDidUnload;

- (void)dealloc;

PS: 当程序收到内存不足的警告后, 程序内存中的所有的UIViewController都将会收到didReceiveMemoryWarning调用消息. 目的是将当前不显示的UIViewController中的view释放掉(不会调用UIViewController的dealloc方法), 所以当该UIViewController再次显示的时候又要生成一次, 此时它会调用loadView-> viewDidLoad ->viewWillAppear等, 这时最容易造成内存泄漏!

- (void)didReceiveMemoryWarning;

- (void)viewWillUnload;//iOS5.0添加

  • (void)viewDidUnload;

暂且到这边....

你可能感兴趣的:(移动开发,xcoder)