iOS学习--第五天杂记
先解决下昨天遗留的问题,晚上回去没看啊,a little tired.
1. appDelegate.h与appDelegate.m的作用
2. 关于UIVeiwController的有关知识点学习
3. UITabBarController
4. controller文件中@protocol与@optional属性
5. UIController
--------------------(我是分割线)
1. 先说下main.m这个文件
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}
默认的ios程序都是从main函数开始执行的,它就包含了一个方法。方法内部有四个参数。
关于参数的作用可以按住option键查看。
argc与argv:参数个数与参数内容。
第三个参数代表UIApplication类(或子类)字符串,这个参数默认为nil则等价于NSStringFromClass([UIApplication class])。UIApplication是单例模式,一个应用程序只有一个UIApplication对象或子对象;
第四个参数是UIApplication的代理类字符串,默认生成的是AppDelegate类。
AppDelegate类的作用:这个类主要用于监听整个应用程序生命周期的各个事件。当UIApplication运行过程中引发了某个事件之后会调用代理中对应的方法。
方法执行过程 --也就是说当执行UIApplicationMain方法后这个方法会根据第三个参数创建对应的UIApplication对象。这个对象会根据第四个参数AppDelegate创建并制定此对象为UIApplication的代理;同时UIApplication会开启一个消息循环不断监听应用程序的各个活动,当应用程序生命周期发生改变UIApplication就会调用代理对应的方法。
应用程序UIApplication是通过代理与外部交互的。
AppDelegate.m这个类中定义了应用程序生命周期中各个事件的执行方法:
1. didFinishLaunchingWithOptions:程序启动之后执行,只有在第一次程序启动后才执行,以后不再执行。
2. applicationWillResignActive: 程序将要被激活时(获得焦点)执行。
3. applicationDidEnterBackground: 程序进入后台后执行(先失去焦点再进入后台)。
4. applicationWillEnterForeground: 程序将要进入前台时执行。
5. applicationDidBecomeActive: 程序被激活(获得焦点)后执行(先进入前台再获得焦点)。
6. applicationWillTerminate: 程序在终止时执行。
至此AppDelegate.m中的常用方法已经了解。那对于文件结构可以再做一个总结:
1. AppDelegate(.h/.m): 应用程序代理,主要用于监听整个应用程序生命周期中各个阶段的事件。
2. ViewController(.h/.m): 视图控制器,主要负责管理UIView的生命周期,负责UIView之间的切换,对UIView事件进行监听等。
3. Main.storyboard: 界面布局文件,承载对应UIView的视图控件。
4. Images.xcassets: 应用程序图像资源文件。
5. Info.plist:应用程序配置文件。
6. Main.m:应用程序入口函数文件。
-----------------------(我是分割线)
2. UIViewController
视图控制器。 我不禁想到了UIView,在网上查了下。看见扯了这么多,完全不是自己想要了解的。
本人觉得UIView它就是界面上所有可视化控件的父类,譬如UILabel,UIWindow等。而UIViewController了,它却是一个视图控制器。在我看来这个文件里面它是要实现某些方法滴。
不过UIView的方法值得一提:
一个UIView里面可以包含许多的Subview,即其它的UIView。
1. 新增和移除SubView
[Subview removeFromSuperview] //将Subview从当前的UIView中移除
[UIView addSubview:Subview] //为UIView增加一个Subview
2. Subview的移动
[UIView bringSubviewToFront:Subview] //将Subview往前移动一个图层(与前一个图层对调位置)。
[UIView sendSubviewToBack:Subview]//将Subview往后移动一个图层。
3. 使用索引交换两个Subview的图层层级
[UIView exchangeSubviewAtIndex: indexA withSubviewAtIndex: indexB]//交换两个图层
4. 获取Subview的索引
NSInteger index = [[UIView subviews] indexOfObject: SubviewName];
5. 为Subview加上标记
[Subview setTag:NSInteger]//加上标记
[UIView viewWithTag:NSInteger]//通过标记得到view 返回值为UIView
6. 取出UIView中所有的Subview,并以由后往前的顺序列出这些Subview。
[UIView subviews]
方法是介绍不完滴,说了这些当前然并卵的东西,我该进入正题--UIViewController
看了网上长篇短篇的论述,我决定看下UIViewController的官方文档。看半个小时能否看完。
先声明这一系列博文只为记录自己学习的一个过程。
我只想说我想如饥似渴的参读官方文档,可是无奈文档涉及到的知识点实在太多。所以我只能说第一波高地没能上成。
这篇UIViewController中个方法调用顺序及功能详解应该是个好文章,先留着。
不行啊。还是得找时间看官方文档.
--------------------(我是分割线)