iOS开发的入门知识

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容

  • UIWindow 借用作者 文顶顶 1、UIWindow是一种特殊的UIView,通常在一个app中只会有一个UI...
    _Dam0n阅读 209评论 0 0
  • 初识iOS APP开发#### 在iOS APP开发中, main函数仍是程序的入口和出口, 但main函数不需要...
    DeanYan阅读 6,111评论 0 3
  • 1,Search Bar 怎样去掉背景的颜色(storyboard里只能设置background颜色,可是发现cl...
    以德扶人阅读 2,329评论 2 50
  • 我室友是家里的小四儿(上面一哥哥俩姐姐),从小被父母疼爱的同时也被哥哥姐姐压迫,这大概是他魔鬼天使性格的根源吧? ...
    一个安静的游泳教练阅读 565评论 8 4
  • 似乎从未认真观察过母亲,也许是天天和他生活在一起,反而没有引起我的注意。但那天之后,我却牢牢的将她的面容印在我的心...
    伊笙_8be1阅读 173评论 0 1