iOS是由苹果公司开发的移动操作系统。苹果公司最早于2007年1月9日的Macworld大会上公布这个系统,最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及Apple TV等产品上。iOS与苹果的Mac OS X操作系统一样,属于类Unix的商业操作系统。原本这个系统名为iPhone OS,因为iPad,iPhone,iPod touch都使用iPhone OS,所以2010WWDC大会上宣布改名为iOS(iOS为美国Cisco公司网络设备操作系统注册商标,苹果改名已获得Cisco公司授权)。
嗯,百度百科是这样说的。
简单来说,iOS就是苹果手机和ipad之类的移动端用的系统,而开发的软件就要基于这个系统去开发。
目前来说的开发iOS软件是用了两套语言,一套是OC(objective-c),一套是swift。而主要开发的编译器是xcode。
那么先来介绍下oc在xcode下的入门操作。
首先去建立一个Xcode -> 点击第create a new Xcode project -> Single View Application下的一个应用程序
这里Product Name就是你项目的名字
Team是你的团队,当然一开始学的时候,就不需要填写 Organization Name 和Identifier当然也是暂时不需要的
Language要记得填写Objective-c,如果是Swift的话,出来的洁面以及编写的语法也是不一样的
Devices是你的载体,包括通用,iPhone和iPad
现在创建好了之后会出现这样的界面
那么在.h文件里写基本是导入的头文件就是一堆 #import 等等
那么在.m文件里就写代码的地方,在 viewDidLoad这个位置写,下面的是内存管理,暂时先不用理
那么说说main
1、main函数,程序唯一的入口
2、UIApplicationMain函数函数作用
1)创建一个应用程序UIApplication对象,他是应用程序的象征,一个UIApplication对象就代表一个应用程序
2)指定谁管理应用程序的生命周期
3、到了以后慢慢会发现,函数等一系列方法,应该写在main函数之外,而不是在main函数内
二、程序的生命周期
作者 JoanKing
#import"AppDelegate.h"
@interfaceAppDelegate()
@end
@implementationAppDelegate
#pragma mark 系统自动生成一个窗体 //#pragma mark 是标记的一种方法
//1.当Applaction对象被实例化后,程序启动调用这个方法
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
// Override point for customization after application launch.
NSLog(@"输出系统自己创建的window=%@",self.window);
#pragma mark 手动创建一个UIwindow对象
//1).创建一个window对象
//UIWindow *customWindow = [[UIWindow alloc]init];
//这样是oc的语法,其实创建这样的一个东西,就可以说是定义一个指针,然后alloc 是内存分配,init 是初始化
//注意
//在实际开发中很少会用到new,一般创建对象时我们一般是
//[[className alloc]init];
//区别只在于alloc分配内存的时候使用了zone它是给对象分配内存的时候,把关联的对象分配到一个相邻的内存区域内,以便于调用时消耗很少的内存,提升了程序处理速度。
//不推荐使用new:原因是使用new的话,初始化方法被固定死只能使用init,不能调用其他的initXX方法。采用new方法只能采用默认的init方法完成初始化,采用alloc的方式可以用其他定制的初始化方法。
//2).获取到UIScreen对象
UIScreen*screen = [UIScreenmainScreen];
//4).给window设置一个位置和尺寸
CGRectrect = [screen bounds];//自动获得当前所选择的模拟器的窗体大小
UIWindow*customWindow = [[UIWindowalloc]initWithFrame:rect];
//5).给窗体设置背景颜色
customWindow.backgroundColor = [UIColorblueColor];
//6).给window设置一个根控制器,window和控制共同协作起来显示界面
customWindow.rootViewController = [[UIViewControlleralloc]init];
//7).将customwindow赋值给self.window
self.window = customWindow;
//8).把定义的window作为主window,并显示出阿莱
[customWindow makeKeyAndVisible];
#pragma mark 在桌面上放一些试图
//用试图做一个王字玩玩
//第1个竖UIView*view = [[UIViewalloc]init];view.frame =CGRectMake(140,50,40,380);view.backgroundColor = [UIColoryellowColor];[self.window addSubview:view];
//第1个横UIView*view1 = [[UIViewalloc]init];view1.frame =CGRectMake(50,50,220,40);view1.backgroundColor = [UIColorgreenColor];[self.window addSubview:view1];
//第2个横UIView*view2 = [[UIViewalloc]init];view2.frame =CGRectMake(50,220,220,40);view2.backgroundColor = [UIColorredColor];[self.window addSubview:view2];
//第3个横UIView*view3 = [[UIViewalloc]init];view3.frame =CGRectMake(40,390,240,40);view3.backgroundColor = [UIColorpurpleColor];[self.window addSubview:view3];
NSLog(@"程序启动");returnYES;}
//3.当应用程序将要进入非活跃状态执行,比如来电话了、锁屏等。
- (void)applicationWillResignActive:(UIApplication*)application {NSLog(@"程序进不活跃状态");}
//4.一般程序进入后台,就会进入非活跃状态,但如果你的程序支持后台,程序在后台也保持活跃状态
- (void)applicationDidEnterBackground:(UIApplication*)application {NSLog(@"程序进入后台");}
//5.程序进入前台
- (void)applicationWillEnterForeground:(UIApplication*)application {NSLog(@"程序进入前台");}
//2.当应用程序进入活跃状态执行
- (void)applicationDidBecomeActive:(UIApplication*)application {
NSLog(@"程序变成活跃状态"); }
//6.当程序将要退出是被调用,通常是用来保存数据和一些退出前的清理工作
- (void)applicationWillTerminate:(UIApplication*)application {
NSLog(@"程序退出");}
@end
出来就是这样了
UIWindow
借用作者 文顶顶
1、UIWindow是一种特殊的UIView,通常在一个app中只会有一个UIWindow
iOS程序启动完毕后,创建的第一个视图控件就是UIWindow,接着创建控制器的view,最后将控制器的view添加到UIWindow上,于是控制器的view就显示在屏幕上了
一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow。也就说,没有UIWindow,就看不见任何UI界面
补充:UIWindow是创建的第一个视图控件(创建的第一个对象是UIapplication)如下图:
添加
2、程序中每个时刻只能有一个UIWindow是keyWindow,通常应用程序只有一个window
创建UIwindow,再创建控制器,创建控制器的view,然后将控制器的view添加到UIWindow上。
文档中关于该部分的解释:
3、iOS程序启动完毕后,会首先创建一个UIWindow
4、一个iOS程序之所以能显示到屏幕上,完全是因为它有UIWindow,也就是说没有UIWindow,就看不见任何UI界面
5、常用方法
1.简单说明
创建一个空的项目,就可以看到UIWindow是怎么出来的了。在程序启动完毕之后就会调用一次,创建过程如下:
提示:应用程序启动之后,先创建Application,再创建它的代理,之后创建UIwindow。UIWindow继承自UIview。
2.把view添加到uiwindow
创建一个控制器,把view添加到uiwindow上面(有两种方式)
(1)直接将控制器的view添加到UIWindow中,并不理会它对应的控制器
[self.window addsubview:vc.view];
(2)设置uiwindow的根控制器,自动将rootviewcontroller的view添加到window中,负责管理rootviewcontroller的生命周期
[self.window.rootviewcontroller=vc];
两个方法的区别:
以后的开发中,建议使用(2).因为方法(1)存在一些问题,比如说控制器上面可能由按钮,需要监听按钮的点击事件,如果是1,那么按钮的事件应该由控制器来进行管理。但控制器是一个局部变量,控制器此时已经不存在了,但是控制器的view还在,此时有可能会报错。注意:方法执行完,这个控制器就已经不存在了。
问题描述1:当view发生一些事件的时候,通知控制器,但是控制器已经销毁了,所以可能出现未知的错误。
问题描述2:添加一个开关按钮,让屏幕360度旋转(两者的效果不一样)。当发生屏幕旋转事件的时候,UIapplication对象会将旋转事件传递给uiwindow,uiwindow又会将旋转事件传递给它的根控制器,由根控制器决定是否需要旋转
UIapplication->uiwindow->根控制器(第一种方式没有根控制器,所以不能跟着旋转)。
提示:不通过控制器的view也可以做开发,但是在实际开发中,不要这么做,不要直接把view添加到UIWindow上面去。因为,难以管理。