iOS开发的学习笔记

引言

之前做过半年的iOS开发,从完全不懂的移动开发的菜鸟,到完成前端UI开发的菜鸟,做的一些笔记,希望对大家有用,也希望这些总结的东西对以后会有作用。

开发环境

iOS的系统框架分为四个层次:

  • 核心操作系统层(Core OS):包括内存管理、文件系统、电源管理以及一些其他的操作系统任务。可以直接和硬件设备进行加互。
  • 核心服务层(Core Services):可以通过它来访问iOS的一些服务,比如网络连接、文件访问、数据库和用户定位等。
  • 媒体层(Media):通过它可以在应用程序中使用各种媒体文件,进行音频和视频的录制,图形的绘制以及制作基础的动画效果。
  • 可触摸层(Cocoa Touch):这一层为应用程序开发提供了各种游泳的框架,并且大部分与用户界面有关,本质上来说,它负责用户在iOS设备上的触摸交互操作。

    ios_system_structure

开发语言

Object-C

根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言。完全兼容C语言,后缀为.m类型。

swift

  • 简介:Swift在天朝译为“雨燕”,它跟Objective-C一样,可用于开发iOS、MAC应用程序。苹果公司从2010年7月开始设计Swift语言,耗时4年打造。苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。

  • 特点:Swift是一门完全面向对象的语言,它抛弃了C/C++的历史包袱,就是基本的类型如char、Int、Long等类型都是一个结构体对象, 引入在Java、C++、Python中使用的操作符重载、泛型、名字空间、闭包等特性。

    本质上讲:Swift语言是对OC语言的优雅包装,它的底层还是使用Cocoa Touch,Foundation框架,只是在语言层面上让开发变得更简单了。

  • 面向对象(OOP):是现代流行的程序设计方法,是一种主流的程序设计规范。其基本思想是使用对象、类、继承、属性、方法等基本概念来进行程序设计,从现实世界中客观存在的事物出发来构建软件系统,并且在系统构造中尽可能运用人类的自然思维。swift语言中的面向对象类型如下:

    swift_objective

    苹果公司声称新的Swift语言拥有快速、现代、安全、互动的新特性,并且性能全部优于OC。

    swift_performance

  • swift与OC语言在编程时的区别

    • 不像 C语言和 OC语言一样都必须有一个主函数 main()作为程序入口,swift程序从第一句开始向下顺序执行。一直到最后。
    • 每个语句结束后可以不加分号,但是多条语句不能写在同一行
    • 在声明常量或者变量的时候直接初始化可以省略其类型,否则需要在变量名称后跟冒号加类型。实际开发中建议全都加上,以免出现错误

开发环境

  • 软件环境:

    • 运行环境:iOS(苹果公司开发的移动操作系统);
    • 开发环境:mac OS Sierra 10.12.1(swift语言开发最低要求为Mac OS X10.9.3版本以上);
    • 开发工具:Xcode 7.3版本(要求Xcode 6.0以上);
  • 硬件环境:

    • Mac苹果电脑

开发流程

开发者证书

Certification

Cocoa框架

Cocoa是创建Mac OS X和iOS程序的原生面向对象API,为这两者应用提供了编程环境。 通常称为“Cocoa框架”,事实上Cocoa本身是一个框架的集合,它包含了众多子框架。

cocoa

  • Cocoa中最最核心的有两个

    • Foundation框架:Foundation框架为所有的应用程序提供基本系统服务,Foundation框架包含所有和界面显示无关的类。包含:

      • 创建和管理集合,比如数组和字典
      • 访问存储在应用程序里的图片和其它资源
      • 创建和管理字符串
      • 提交和接收通知
      • 创建日期和时间对象
      • 自动发现IP网络上的设备
      • 操作URL流
      • 执行异步代码
    • Application Kit(AppKit)框架(Cocoa Touch中叫UIKit框架):Application Kit 框架包含实现图形的、事件驱动的用户界面需要的所有对象:窗口、对话框、按键、菜单、 滚动条、文本输入框—-这个列表还在不断增加。包含:

      • 构建和管理你的用户界面
      • 捕获触摸和基于移动的事件
      • 呈现文字和web内容
      • 优化你的多任务程序
      • 创建定制的用户界面元素

第三方库

除了需要核心框架,在APP开发过程中还会用到一些辅助框架,如Alamofire(网络请求)、JLToast(动态弹出框)等。

在开发项目中,需要使用第三方库,Cocoapods是最有影响力的OS X 和iOS项目依赖管理工具,于2011年发布,经过多年的发展,他已经非常完善了。Cocoapods支持项目中采用Object-C或者swift语言。

Cocoapods会将第三方库的源代码编译为静态链接库.a文件或者是动态框架.framework文件的形式,并将它们添加到项目中,建立依赖关系。

CocoaPods被建立在Ruby上,而自从OS X 10.7之后的Mac OS X版本带有Ruby,这样使用起来非常方便。

设计架构

design_model

代码实现流程

  • OC

    oc_development

  • Swift

    swift_development

进展

ios_process

参考资料

  1. iOS开发简介.pdf
  2. iOS系统架构及OC开发流程.pdf
  3. swift语法学习笔记.pdf
  4. 基于swift的iOS开发学习笔记.pdf
  5. 《iOS开发指南 从Hello World到App Store上架》(第4版).关东升 著;
  6. 《从零开始学Swift》.关东升 著;
  7. 《swift开发实战 权威指南》欧阳坚等 著;
  8. 《iOS成长之路》
文献5-6的源码:链接: https://pan.baidu.com/s/1PCOYYjwhMZTrGQ-D9Bh6vA 密码: bsas

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/242273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国际人工智能算法与应用研讨会(WASA 2018)参会笔记

从博士师兄那里知道就在天津高新区有这个会议,就跟着师兄报名了,下面是参会第一天的感想。 背景WASA是人工智能领域的国际性大型会议,也是中国计算机学会(CCF)推荐的会议。旨在为人工智能研究者、开发者和企业提供一个…

C#类型转换和常用类

C#类型转换 任何事物都是对象 表达式中的类型转换 强制类型装换 普通类型装换 基本类型 数与字符串的转换 常用类(类都有方法)

机器学习标签编码

二值编码独热编码定义 :One-Hot Encoding即One-Hot 编码,也称独热编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有…

c#数组和集合

c#数组和集合 数组 集合 遍历它 foreach只能取得元素,不能修改元素 另一个例子 遍历它

数据结构与算法(一)——排序

虽然之前学过数据结构,但是已时隔四年,大概四月份复习了一遍,但是很多概念也是一知半解,所以重新整理知识点和运行代码的方式来巩固知识。 引言排序:是计算机程序设计中的一种重要操作,功能是将一个数据元素…

PHP(四)——性能优化

之前基于PHP开发的过程中,一直没有涉及到PHP性能优化的问题,但是一般来说PHP性能问题占整个项目性能问题一般占30%-50%部分,所以说,这部分内容是非常重要的。下面是最近自己PHP性能优化学习的资料整理。 引言[1]PHP存在性能问题的…

C#常用的算法

C#常用的算法 遍试算法 迭代算法 递归 递归算法的基本思想:分而治之

kaggle使用笔记

因为参加了DCASE2018比赛的声学场景分类的子任务,这个比赛有个排行榜是用的kaggle来做的,所以在比赛中,用到过kaggle API,下面是关于kaggle的使用笔记。 kaggle 是什么?Kaggle是一个数据科学竞赛的平台,很多…

PHP简单功能的实现

检查一个变量是否为空empty功能返回值:若变量不存在则返回 TRUE若变量存在且其值为””、0、”0”、NULL、FALSE、 array()、var $var; 以及没有任何属性的对象,则返回 TURE若变量存在且值不为””、0、”0”、NULL、FALSE、 array()、var $var; 以及没有…

C#流和文件

C#流和文件 文件及文件夹管理 WinForm中的文件对话框 文件内容的读写 注册表操作

PHP操作MySQL数据库(连接、增删改操作)

MySQL 是跟 PHP 配套使用的最流行的开源数据库系统,我们知道MySQL是PHP的最佳搭档,下面是系统的总结PHP与MySQL联合使用的方法。主要是使用MySQL扩展,下面就通过归纳总结来提升。 MySQL概述MySQL 是一种在 Web 上使用的数据库系统。 MySQL 是…

互联网应届生四项职场生存技能

职场能力一:沟通力沟通力是职场最重要也是最基础的一项能力。 进入职场后,无论从事什么岗位都必然要用到沟通力这个能力项。沟通力有一个很重要的基石,就是尊重对方的时间。每一次沟通,双方其实都要投入很多时间和精力。只有懂得尊…

C#中程序错误的种类和程序的调试

C#中程序错误的种类 语法错误 运行错误 逻辑错误 程序调试的基本手段 然后运行 调试程序例子 例子2:读文件 没有找到文件 null引用就是没有进行初始化 索引超出数组界限

缓存

最近在狂补优化方面的知识,缓存也是优化的一大方向。之前关于缓存只是知道它的功能,再多不知道了,这里整理缓存相关的知识,算是优化入门吧。 相关概念缓存 是“存贮使用频繁的数据的临时地方,因为取原始数据的代价太大…

mysql中as用法

重命名列名或者表名。as可理解为:用作、当成,作为;一般是重命名列名或者表名。(主要为了查询方便) 重命名列。如:表text, 列 column_1,column_2 你可以写成: 1select column_1 as …

C#中window窗体和控件

C#中window窗体和控件 布局与事件–界面的基本问题 布局 就是拉动窗体的时候,按钮也在跟着变动。 事件 //简单的计算器 using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; namespa…

PHP自动加载机制

概述首先,为什么PHP需要自动加载呢? 在PHP面向对象(OO)编程中,为了方便管理,我们都会把一个类写在一个单独的文件中,那么如果想在A类中使用B类的功能,就需要把B类加载到A类。对于这样的需求在最原始的时候&…

操作系统知识——互斥和死锁

银行家算法银行家算法是最有代表性的避免死锁算法,是Dijkstra提出的。这是由于该算法能用于银行系统现金贷款的发放而得名。 我们可以把操作系统看作是银行家,操作系统管理的资源相当于银行家管理的资金,进程向操作系统请求分配资源相当于用户…

C#常用的控件

C#常用的控件 窗体 菜单、工具栏、对话框 用户控件及控件的继承

C++输入函数的应用

最近因为找工作的事情,在刷一些编程题,也陆陆续续参加了一些笔试,一般编程中使用的语言是C,因为编程题会有时间的限制,C的效率最高,不容易出现超时的问题所以使用最多的语言就是C。 在编程中,其…