美文网首页
iOS开发的入门知识

iOS开发的入门知识

作者: _Dam0n | 来源:发表于2017-06-25 11:01 被阅读18次

            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上面去。因为,难以管理。

    相关文章

      网友评论

          本文标题:iOS开发的入门知识

          本文链接:https://www.haomeiwen.com/subject/oarlcxtx.html