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

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

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

时间: 2024-10-15 23:19:57

IOS学习--第五天杂记的相关文章

ios学习第三天杂记

ios学习第三天杂谈,从一个接口文件和实现文件(student.h与student.m)中学习到的.相关文章请参考: OC精选字符串处理方法. 1. 代码规范: 1.1: 类名的首字母要大写 1.2: 方法的命名用驼峰命名法 2. 干货 2.1: 要在一个类中实例化类,需要先引入类的接口文件如***.h. 2.2: OC中类的实例化方式是 Student  *student =  [[Student alloc] init], 可以理解为Student类在NSObject类中继承了alloc方法

ios学习随笔五

Touches 触摸事件处理:在viewcontroller中添加touch的一些方法 //获取触摸点println(touches.anyObject()?.locationInView(self.view)) 多点触摸得在viewdidload中打开多触摸, self.view.multipleTouchEnabled = true 缩放图片: 缩放和放大是通过多点触摸时候,屏幕之间的距离.当两点之间的距离大了,就是放大,否则是缩小 if touches.count == 2{ var cu

ios学习第三天杂记--Objective-c中的集合类

Objective-C中的集合类: 1. 数组 NSArray 在Objective-C中的集合类中主要包括不可变的数组--NSArray, 可变的数组--NSMutableArray, 不可变的字典--NSDictionary, 可变的字典--NSMutableArray, 不可变的集合--NSSet , 可变的集合--NSMutableSet 1>. 不可变的数组 NSArray 数组是有序对象的集合,用来存储对象的有序列表,在OC中数组中必须存的是对象,不能是基本数据类型,若想存入基本数据

iOS学习第四天杂记--Objective-C中的内存管理

先说明下,原文为青玉伏案写的.我这只是学习而已. OC中的内存管理. OC中使用引用计数和垃圾回收来管理内存,在OC中为每个对象分配一个引用计数器,当对象刚刚被创建时其初始值为1,当有某段代码需要访问一个对象时,会将该对象的引用计数器加1(通过retain来实现):当访问一个对象结束时,会将该对象的引用计数器减1(通过release来实现):当计数器为0时,该对象占用的内存空间会被收回.在NSObject类有一个retainCount方法,调用该方法可获取当前对象的引用计数值. Tips:测试时

iOS学习笔记---oc语言第五天

字典,数组 ,集排序 一.字典类 存储以下数据 name:张三; sex:男;age:18 film:风暴; playcount:10000次;price:60元 字典类用于保存具有映射关系(key-value对)的数据 对于“name:张三”来讲,key就是“name”,key对应的value是“张 三” 一个key-value对认为是一个元素(实体),字典是存储key-value对 的容器. 特点: 与数组不同,数组靠下标存取数据,数组的下标是唯一的. 字典靠key存取元素.key不能重复,

2015最新iOS学习线路图

iOS是由苹果公司开发的移动操作系统,以xcode为主要开发工具,具有简单易用的界面.令人惊叹的功能,以及超强的稳定性,已经成为iPhone.iPad 和iPod touch 的强大基础:iOS 内置的众多技术和功能让 Apple设备始终保持着遥遥领先的地位. iOS学习路线:http://www.mobiletrain.org/page/ios.html 课程分  类 课程模块 模块介绍 课程内容 Part1C语言 C语言和Objective-C语言 C语言 Mac系统及常用工具.进制:C数据

黑苹果-IOS学习的开始

九个月之前,由于学习ios,而自己又囊中羞涩,于是便一脚跨入了装黑苹果的这个坑!!! 深知安装黑苹果的不易,在这里写一下关于我的Thinkpad E430c安装黑苹果教程(Mac版本:Yosemite 10.10.4),希望能够帮助有需要的朋友. 首先贴上我的电脑配置报表: ---------------------------------------------------------------------[ 概览 ]-------------------------------------

我的IOS学习资源收录

IOS7视频教程-storyboard与UIApplication http://v.youku.com/v_show/id_XNzMxMjgwNzEy.html 关东升老师的ios视频教程 iPhone与iPad开发实战-ios经典应用剖析-7大项目实战开发 1第1讲工具类应用密码生成(Amuck Password Generator)57分钟   2第2讲工具类应用密码生成(Amuck Password Generator)52分钟   3第3讲工具类应用--密码生成(Amuck Passw

iOS学习笔记-精华整理

iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始等待用户的操作,自动释放池就会被释放掉(调用dealloc),池中的对象都会收到一个release,有可能会因此被销毁. 2-成员属性:     readonly:不指定readonly,默认合成getter和setter方法.外界毫不关心的成员,则不要设置任何属性,这样封装能增加代码的独立性和安全

iOS 学习资料

(适合初学者) 本文资料来源于GitHub 一.视频教程(英文) Developing iOS 7 Apps for iPhone and iPad斯坦福开放教程之一, 课程主要讲解了一些 iOS 开发工具和 API 以及 iOS SDK 的使用, 属于 iOS 基础视频 iPad and iPhone Application Development该课程的讲师 Paul Hegarty 是斯坦福大学软件工程学教授, 视频内容讲解得深入, 权威, 深受好评 Advanced iPhone Dev