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中个方法调用顺序及功能详解应该是个好文章,先留着。

不行啊。还是得找时间看官方文档.

--------------------(我是分割线)

原文地址:https://www.cnblogs.com/wmx-rj/p/4729469.html