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

c#数组和集合

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

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

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

PHP(四)——性能优化

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

C#常用的算法

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

C#流和文件

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

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

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

C#中window窗体和控件

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

C#常用的控件

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

C#绘图及图像

C#绘图及图像 绘图的基本方法 绘图的应用

C#实现定时器

C#实现定时器 方法一 布局 代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace…

mark

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

C语言的进阶-指针的应用

指针的应用 #include <stdio.h> void swap(int *p,int *q); int main() {int a 5;int b 8;swap(&a,&b);printf("a%d,b%d\n",a,b);return 0; }void swap(int *p,int *q) {int t *p;*p *q;*q t; }函数只能返回一个值&#xff01; 可以通过参数返回多…

C语言进阶-指针与数组

C语言进阶-指针与数组 q可以改变指向的内容&#xff0c;但不能改变指向的地址 p可以改变指向地址&#xff0c;但不能改变指向内容

发布文章测试

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注…

C语言进阶-指针运算

C语言进阶-指针运算 #include <stdio.h>int main() {char a[] {0,1,2,3,4,5,6,7,8,9};char *p a;printf("p%d\n",p);printf("p1%d\n",p1);int b[] {0,1,2,3,4,5,6,7,8,9};int *q b;printf("q%d\n",q);printf("q1%d\n",q1);r…

C语言进阶-动态内存分配

C语言进阶-动态内存分配 #include <stdio.h> #include<stdlib.h>int main() {int number;int *a;int i;printf("请输入数组的数量");scanf("%d",&number);//int a[number];a(int*)malloc(number*sizeof(int));//开辟数组的大小for(i 0;i&…

测测

编辑 1.多喝水 2.清黑头&#xff0c;一周做一次角质&#xff0c;一个月做一次小气泡 3.防晒 无论春夏秋冬 4.少吃辣&#xff0c;多喝柠檬水 5.早上护肤步骤&#xff1a;洁面-爽肤水-眼霜-精华-面霜-防晒 6.晚上护肤步骤&#xff1a;卸妆-洁面-水-眼霜-精华-面霜 7.一周三…