首页 > 移动平台 > 详细

iOS_book 01- Xcode基本用法和Hello world

时间:2016-02-23 00:55:25      阅读:244      评论:0      收藏:0      [点我收藏+]

(基于精通iOS开发 第七版)

iOS程序的特点
1:在iOS中,一次只能有一个应用处于活动状态并显示在屏幕上。从iOS 4开始, 可以专门编写代码使用户按下home键后,app可以在后台继续运行。
不处于活动状态或者在后台运行时,应用程序不会占用任何CPU资源,这会严重干扰其与开放式网络的链接。iOS允许后台处理,不过要使应用程序在此状况下良好运行则需要开发者自己努力。
 
2:只能使用一个窗口:除非app经过特别编码,并且链接另一个屏幕或者使用Airplay镜像,否则iOS只允许app操作一个窗口。
app与用户的所有交互都在这个窗口中完成,而这个窗口大小就是iOS设备屏幕的固定大小。
 
3:有限的访问权限:iOS的文件系统会为每个应用程序分配一块独立的区域,称为沙盒。每个app只能读写自己沙盒内的文件。沙盒就是app用于存储文档/偏好设置等任何有效数据的地方。
app还会受到其他方面的限制,比如不能通过iOS访问端口号较小的网络,也不能进行在台式机中需要根用户或者管理员权限的操作。
 
4: 有限的响应时间:由于使用方式特殊,iOS需要快速响应各种事件,你的应用程序也应如此。启动app时,要立即打开它,载入偏好设置和数据,并把主视图显示到屏幕上,这些过程要在几秒钟内全部完成。
app在运行的时候,随时都有可能面对突然退入后台的情况。app必须尽快保存一切内容并退出。如果没有在5秒之内保存必要的数据并且放弃对系统资源的控制,无论是否已经完全保存,app进程都会被终止。有一个API可以在应用程序终止前请求多一些时间来完成必要的工作,之后用到会介绍。
 
5:有限的屏幕尺寸
技术分享
硬件尺寸指的是屏幕的实际物理尺寸,以像素为单位。不过在编写软件只需要注意软件尺寸一栏的数字。
软件尺寸都是实际硬件尺寸的一半。苹果公司选择将应用程序绘制的所有内容都在内部乘以2,这样不需要做任何代码改动就可以将其铺满新屏幕。
所有使用Retina屏幕的设备都采用了内部乘以2的机制,iPhone 6 Plus例外,需要乘以三。
通常来说无需担心应用程序实际放大的倍数,只需要根据软件屏幕尺寸进行开发,剩下的交给iOS来做就行。
唯一不适用于这个规则的是位图。由于位图自身的尺寸是固定的,无法让同一张图片在Retina屏幕和非Retina屏幕上拥有一样好的效果。如果这样做,iOS会为Retina屏幕设备将图片放大,从而产生模糊的感觉。可以通过为每张图片补充2倍和3倍的副本来解决这个问题,iOS会根据应用程序运行的设备屏幕来选取合适的那张。
 
技术分享
 
6:有限的系统资源:Cocoa Touch提供一种内置机制,可以在内存不足时通知应用程序,出现这种情况时,app必须释放不必要的内存空间,否则就可能被强制退出。
 
7: 不支持垃圾回收:Cocoa Touch使用的是Objective-C,但是iOS并不支持Objective-C早在本世纪初就已经具有的一个关键特性:垃圾回收。iOS使用的是ARC来解决手动管理Objective-C对象占用内存的问题。ARC也是iOS应用程序的默认内存管理机制。
 
创建iOS项目
 
技术分享
技术分享
技术分享
 
 
 
 
 
 
 
Xcode项目窗口
 
技术分享
 
工具栏:
技术分享
 
工具栏左侧依次是用于启动和停止项目运行的控制按钮
用于选择运行方案的下拉菜单,以及用于启动和禁用断点的按钮
方案(scheme)将目标和构建设置结合在一起。
 
工具栏中间的大方框是活动视图(Activity View).活动视图显示着当前正在进行的操作和处理。
技术分享
 
技术分享
 
导航视图,在工具栏下方,项目窗口左侧就是导航视图(Navigator).导航视图共提供8个面板。供开发者通过不同的方式查看项目。下面从左至右依次介绍。
技术分享
 
技术分享
 
技术分享技术分享
 
技术分享
技术分享
技术分享
技术分享
 
技术分享
技术分享
技术分享
技术分享
技术分享
技术分享
 
跳转栏
技术分享
技术分享
技术分享
 
新的编译器和调试器
苹果公司一直使用GCC(GNU Compiler Collection)作为底层编译器。但是最近已经全面转换到新的LLVM(Low Level Virtual Machine, 底层虚拟机)编译器。
LLVM 还提供了一个精准的静态分析其(static analyzer), 可以扫描代码以查找到各种潜在问题,包括内存管理问题。
 
技术分享
 
 
 
技术分享
技术分享
技术分享
技术分享
 
技术分享技术分享
main.m:Objective-c 项目还包含了一个main.m文件,里面是应用程序的main()方法,通常不需要编辑或修改这个文件,事实上最好不要碰这个文件,除非你知道自己在做什么。
 
技术分享
技术分享
 
Interface Builder 简介
选择Main.storyboard文件,这个文件就会在编辑器面板中打开,可以看到一个完全空白的iOS设备屏幕,可以在这个背景上编辑界面。这就是Xcode的Interface Builder有时候称为IB,用来设计应用的用户界面。
 
文件格式:
Interface Builder支持不同的文件类型:最初版本使用扩展名为.nib的二进制格式,后来有了扩展名.xib的版本(一种基于Xml的衍生格式)。两者的文档类型完全一样,但xib格式的版却是基于文本格式的,这样做有很多优势,尤其是使用源代码控制管理的时候。大部分开发者都把Interface Builder文件成为nib文件。不管文件实际使用的是.xib还是.nib扩展名,都被称为nib文件。
一个nib文件可以包含任意数量的对象,但在iOS项目中,每个nib文件通常只包含一个视图(一般都是全屏视图)以及相关联的控制器或对象。这可以对应用进行划分,只在某个视图需要显示的时候加载它的nib文件。这样能为内存受限制的iOS设备节约应用运行时的内存。
storyboard文件类型,可以将storyboard想象成一个“元nib文件(meta-nib file)”,因为它可以包含多个视图和控制器,以及如何在应用运行时进行相互连接的配置信息。与一次就加载完成所有内容的nib文件不同,storyboard不会一次加载所有的内容,你需要在加载某视图和控制器时向它请求特定的内容。
 
Main.storyboard文件会在应用启动时自动加载, 往这里添加对象就可以组成应用的用户界面。在Interface Buidler中创建的对象会在程序加载storyboard或nib文件时被实例化。
每个storyboard都是由一组或多组相对应的视图和控制器构成的。视图就是眼睛能看到并可以在Interface Builder中进行编辑的部分,而控制器则是你编写的应用代码,用来处理用户的交互事件。应用的实际操作都是在控制器内执行的。
通过使用一个storyboard来构建能在任何尺寸的设备上运行的应用程序,不需要两个storyboard,当程序在设备上启动时,它会改变自身以匹配当前屏幕的形状,事实上,苹果公司将通过这种方式设计出的应用程序成为自适应的应用程序。
在storyboard里的正方形内的顶端一行可以看到三个图标:View Controller(视图控制器)、First Responder(第一响应者)和Exit(离开)。
视图控制器:代表了一个控制器对象,会从文件中加载控制器以及相关的视图。它的任务是管理用户在屏幕上看到的内容。一个应用程序通常有多个视图控制器,每个界面各一个。
第一响应者:简单来说就是用户当前正在进行交互的对象。如果用户正在向一个文本框中输入数据,那么这个文本框就是当前的第一响应者。第一响应者会随着用户与用户界面的交互而变化,通过First Responder图标可以方便的与当前作为第一响应者的空间或者对象通信,不需要编写代码来判断到底哪个控件(或视图)是当前的第一响应者。
 
Interface Builder的编辑器中还有一个层级视图区域,目前称之为文档略图(Document Outline)。如下
技术分享
这里显示storyboard的所有内容,并有场景作为相关内容的容器来进行划分。本示例中只有一个场景,它的名称是View Controller Scene。 可以看到它包含了一个名称为View Controller的子项,往下又包含了一个名称为View的子项和其他一些内容。通过这种方式可以方便地浏览全部的内容。在主编辑区域看到的所有内容都能在这里找到。
 
View 图标代表UIView类的一个实例。UIView对象是用户能够看到并与之交互的一块区域。本例只有一个视图,所以这个图标代表该应用中用户能够看到的全部内容。
 
实用工具视图被分为两部分(如果当前没有看到这个实用工具视图,可以单击工具栏最右侧的View按钮(共三个),或者选择View>Utilities>Show Utilities,也可以按下Option+Command+0快捷键)。
技术分享
实用工具视图下半部分成为库面版(Library Pane),或者简称为库。库是在程序中可以重复使用对象的集合。库与工具栏之间的部分统称为检查器。
库面板顶部工具栏中的4个图标将它分成了4个部分。
文件模板库(File Template Library):这部分包含一些文件模板,可以通过他们像项目中添加新文件。
代码片段库(Code Snippet Library):这部分包含一些代码片段,可以直接把它们拖到源代码中使用。写了一些希望以后能够再次使用的代码,那么在文本编辑器中选中想要的代码,然后将其拖到代码片段库中就行了。
对象库(Object Library):这部分包含各种可重用的对象,比如文本框、标签、滑块、按钮等可以用来设计iOS界面的任何对象。
媒体库(Media Library):这个库包括用户的所有媒体文件,有图片、声音以及影片文件等。
 
技术分享
技术分享
当你放置视图时,Interface Builder默认以为你放置的是相对于父视图左上角的位置。问题在于,我们放置标签的视图比运行应用程序的iPhone模拟器屏幕要宽。我们将标签在Interface Builder里居中放置,并不意味着在接下来要测试应用程序上居中放置。这是一个始终要面对的问题:应用程序最终运行的设备屏幕也许与Interface Buidler设计界面上所见的尺寸不一样。之前说过,这样做是有目的的,苹果公司让程序员尽可能在抽象的正方形上设计,并使你的屏幕布局根据运行时的屏幕尺寸进行自适应。
修复这个问题:在iOS 6中,苹果公司添加了一种名为自动布局(Auto Layout)的技术,可以让你为视图添加约束(constraint),这样就能让其根据实际的屏幕空间自适应调整位置和尺寸。
一个简单的解决方法:将作为设计基础的正方形视图进行改变,使其看起来更像实际运动应用程序的iPhone模拟器的形状。
在项目导航面板中选中Main.storyboard图标,然后在使用工具面板顶端的检查器分页面板中点击File Inspector(文件检查器)图标,
在检查器面板底部,可以看到两个标记为Use Auto Layout(使用自动布局)和Use Size Classes(使用尺寸分类)的复选框,都处于选中状态。点击Use Size Classes复选框取消勾选,完成后Xcode会询问你是否想要保持iPhone或iPad尺寸分类的数据。选则保存iPhone尺寸分类的数据并点击Disable Size Classes,编辑区域中的屏幕轮廓会重新调整为类似iPhone的形状。
 
技术分享
 
属性修改
技术分享
库面板上方的区域,这一部分称为检查器。
技术分享
技术分享
技术分享
技术分享
技术分享
技术分享
 
打开项目导航面板,查看Hello World文件夹里名字为Images.xcassets的文件,它被称为资源目录(asset catalog).每个Xcode项目创建时都会默认生成一个资源目录,用来管理你的应用图标和其他图片。
技术分享
技术分享
这里有个误区:Xcode显示的是点数(point)尺寸,而不是像素尺寸。这里的点数指的是屏幕上的特殊尺寸。在旧的iPhone设备(iPhone4之前的所有手机)以及iPad1、 iPad 2 和iPad mini上,一点代表单个像素;而在其他Retina屏幕的设备上,一点表示实际上是一个2像素*2像素的正方形。不过iPhone 6有些特殊,它的一点是3像素*3像素的正方形。
技术分享
技术分享
iOS程序都会有一个启动界面,这是因为将应用加载到内存中需要时间,而这个界面能让用户立刻看到程序正在执行中。在iOS8之前的版本中,可以提供一张图片(事实上,针对不同的分辨率需要多张图片)以表示应用程序的启动界面。iOS8保留了这种方式,不过苹果公司推荐使用一个启动文件来代替启动图片的作用。当然,如果应用程序需要支持旧的系统,同样也应该提供启动图片。
启动文件:是一个包含启动界面UI的nib文件或者storyboard。在iOS8的设备上,如果存在启动文件,他将优先被视作启动图片的文件。
LaunchScreen.xib是项目中的一个启动文件。

iOS_book 01- Xcode基本用法和Hello world

原文:http://www.cnblogs.com/hengshu/p/5208547.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!