一.项目认知
1.项目是指一系列独特的,复杂的并相互关联的活动,这些活动有着一个明确的目标或目的,必须在特定的时间,预算,资源限定内,依据规范完成。
2.比如盖一栋大楼就是一个目标,它会有很多的活动:分析人流量选地方,设计图纸,盖楼,验收等等。通过这些活动最终完成一栋大楼就是一个项目。
产品:
1.是指能够提供给市场,被人们使用和消费,并能满足人们某种需求的任何东西,包括有形的物品,无形的服务,组织,观念或他们的组合。
二.项目角色
1.项目组是指为了完成某个特定的任务而把一群不同背景,不同技能和来自不同部门的人组织在一起的组织形式。
eg:技术调研组,电影摄影组
2.软件开发项目组的架构分为:项目经理,产品组,研发组和测试组,每个组又会有各个不同的角色。
项目组工作流程:
1.在软件项目开发中,各成员会按照一定的流程来进行各自的工作。
2.首先会由项目经理立顶发起项目
3.产品经理根据需求来设计产品功能
4.UE(交互设计师)根据产品功能来设计用户功能交互
5.UI(视觉设计师)根据功能和交互来设计视觉稿
6.开发工程师根据视觉稿和功能需求来完成软件的开发
7.测试工程师按照需求文档对可运行的软件进行测试
8.经项目经理确认通过之后,项目可以提交上线
三.思维导图
1.思维导图又叫心智图,是表达发射思维的有效的图形思维工具,它简单却又极其有效,是一种革命性的思维工具。
2.思维导图运用图文并重的技巧,把各级主题的关系用相互隶属与相关的层级表现出来,把主题关键词与图像,颜色等建立记忆链接起来。
3.在项目分析中使用思维导图,可以帮助我们更好的去分析项目功能,使得项目能更加清晰和具有条理性。
4.百度脑图是一看在线思维导图编辑器,使用现代浏览器打开使用。
四.接口文档
1.一般我们在做应用的时候,客户端都需要跟服务器端进行通信,将数据从客户端传到服务器上,从服务器上将数据获取下来展示在客户端页面上。
2.我们在做数据上传和数据请求这部分功能的时候,都需要通过请求相对应的后台接口,传递正确的参数之后才能完成。这些接口和参数都是事先规定好的,并且详细的记录在一个文档中,这个文档就叫做接口文档。
3.接口文档就相当于一个协议,当规定好了之后,客户端开发人员和后台开发人员都必须遵守这个协议。如果需要修改,双方开发人员都必须同意之后才能修改。
4.接口文档的编写主要包括5部分:接口的功能,接口地址,请求的方式,请求参数,返回值,有些接口文档中还会包含请求示例和返回值示例,实际上这两个部分也是很有用的,他可以很方便的帮助开发人员快速理解接口。
五.实体文件夹创建
1.方便我们对类文件的管理,如果不创建文件夹,所有的类文件都会在xcode的文件列表中显示,没有一个层级关系;当查阅文件时会非常麻烦。
2.我们可以在xcode中创建虚拟文件夹来对文件进行管理,但是这些文件夹只会在xcode中显示,工程文件夹中是不存在的,所以本地工程文件夹中的文件依然是没有层级关系的,都在同一个文件夹中。
3.如果我们在用git或svn对工程进行上传时这些虚拟文件夹是上传不到服务器上的。
1.在创建实体文件夹时,一定要使用有意义的名字来表示文件夹的功能。文件夹的名字不要使用中文命名,程序在编译文件路径时非常容易出错。
2.文件夹的目录结构,示例如下:
(1).Document ------文档所在路径
(2).Images ----图片等资源要放在单独的目录或组中,但是在Xcode5.0之后提供IMages.xcassets文件夹存放图片(仅限png,其他格式图片自己创建文件夹),这种方式更方便了对图片的管理
(3).Tools ---自定义的工具类(网络请求,数据库类等),公共头文件(宏,接口的url,常量const{通知中心的名字,状态码,枚举,结构体等},全局配置文件(屏幕适配,系统sdk适配,颜色值,图片名字等))
(4).Base文件夹 -----自定义的父类
(5).某个单独的功能。例如:应用了第三方的json下载的功能,应该把所有的文件放在单独的JSon组中。现在xcode中管理第三方最方便的方法是使用CocoaPods。
(6).models,Views或ViewControllers等文件可以按照功能或文件类型放在独立的组中。
六.MVC架构分析
MVC全名是Model View Controller,是模型(model)--视图(view)--控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑,数据,界面显示分离的方法来组织代码。
1.model(模型),存储,处理数据,为应用程序提供数据。一般我们会将数据模型类和对数据的处理类放到M层。例如:通讯录项目中的联系人类,项目中封装的数据请求类等等。
2.view(视图),展示用户界面,提供用户交互,展示模型提供的数据。例如系统提供的视图类UIView,UITableView等地属于V层。在项目中我们自定义的控件,例如自定义cell等。
3.controller(控制器),控制器视图的展示和处理用户的交互,从模型获取数据展示在视图上。目的是解除模型与视图之间的耦合。在iOS开发中几乎所有的UIViewController及其子类都是属于c层的。
MVC的优点:
1.耦合性低,视图层,数据层和业务层分离,这样就在更改视图层代码的时候就不用去处理模型和控制器代码。
2.重用性高,在项目中我们会经常请求网络数据,如果把网络请求封装在M层中,那么在视图层中就不用再去写相同的请求网络的代码,而是直接使用。
3.可维护性高,将代码进行分离之后,如果想要修改或添加功能,就可以直接到某一层中去找相应的代码然后进行调整,大大降低了程序员的维护成本。
4.部署快,使用MVC框架之后,开发时间也会得到缩减,做业务的程序员可以集中精力在业务逻辑上,做页面开发的程序员就可以把主要精力放在页面的开发上。
原理:
1.在MVC框架的设计中,C层可以直接控制V层和M层。但是V层和M层不能与C层进行直接通信。
2.M层向C层发起通信的常用方式有通知和KVO两种方式。就是当M层发生变化时可以通过这两种方式来通知C层,以便C层做相应的处理。
3.V层向C层发起通信的常用方式有delegate,dataSource和Target-action等。
4.在MVC框架设计中,V和M不能直接通信,只能通过C间接通信。
七.抽屉效果的实现机制
1.在APP中常常会有很多的功能模块,这些功能模块都有一个主入口。这些功能的入口我们把它叫做菜单栏,可以从菜单中选择不同的功能。
2.在iOS中通常使用的方式是底部tab菜单,但是在使用tab时底部最多只能显示5个菜单就显示不全了,还有一个问题是tab会占用一部分屏幕,让显示内容的view变小。
3.现在有一种比较流行的菜单做法是左侧滑出抽屉菜单,选择完成之后将菜单收起来隐藏出来。这种抽屉菜单最早是path在iOS上推出的一种菜单设计。
什么是抽屉效果?????
1.菜单页面实际上就是一个UITableView,它解决了tab菜单最多能显示5个模块的问题。
2.当用户进入某模块时,主视图会将菜单页面给遮盖住,使得页面变得更简洁。
具体实现: