#pragma mark - Day01_01_OC语言的历史(了解)
1) Objective - C 是一门面向对象的高级语言
2) Objective - C 简称 obj - C \ OC
3) OC 本质是还是C语言 ,是在C语言基础上加上了面向对象的部分,把C语言中复杂的、繁琐的语法封装的更为简单
4) OC完全兼容C,可以在任何位置写C语言的代码
#pragma mark - Day01_02_OC语言的发展现状(了解)
#pragma mark - Day01_03_OC的未来(了解)
1)苹果在2014年推出了swift语言,并且在2015年年底开源
2)swift未来会成为开发iOS程序的主流,但是需要一段时间,当前夯实以OC为主
#pragma mark - Day01_04_学习目标
#pragma mark - Day01_05_第一个OC程序
#pragma mark - Day01_06_OC的源文件后缀名和main函数
1) Objective - C 源文件的后缀名是 .m C语言程序源文件的后缀名是 .c
2) Objective - C 的入口依然是 main函数
参数 可以有也可以没有
返回值 0 正常结束
"拓展
补充 main函数默认两个参数 初始化值为0
#pragma mark - Day01_07_#import指令
1)以'#'开头,是一个预编译指令
2)#import 指令,是#include的增强版
3)作用:把指定的文件,拷贝到这个指令所在的地方,无论这个文件被#import多少次,最终只会拷贝一次
4)用法:
#import "" 在项目当前目录中找
#import <> 去编译器目录中找
#pragma mark - Day01_08_Foundation框架简要介绍
1)框架概念
类和函数的集合,用来处理相关的一类功能
2)Foundation框架
提供了OC中最基本的语法支持
3)使用
使用框架里的东西,必须先把框架的头文件导入
4)一般的框架都会提供一个和框架名称一样的.h,这个文件中包含了框架中所有头文件,我们只要导入这文件,就等价于导入了这个框架的所有文件
#pragma mark - Day01_09_NSLog函数
1)自动释放池 后续会讲
2)NSLog()函数,是Foundation框架中的一个函数
3)用法
NSLog(@“格式控制符”,变量列表);
4)输出内容
1. 输出时间
2. 项目名称
3. 进程id
4. 线程id
5. 要输出的内容
5)使用方式,与printf基本一样,但是可以自动换行
6)注意点
1. 第一个参数前面一定加上一个'@'符号
2. 如在结果加上\n,函数自动换行会失效
"拓展(可不补充)
补充NSLog局限性(打印C语言带汉语的字符串会出问题)
#pragma mark - Day01_10_NSString字符串
1)C语言字符串实现方式
1. 字符数组
2. 字符指针
2)OC 中的字符串存储使用NSSrting ,只能保存OC字符串
3)方式
声明: NSString *str;
OC 使用 @“”
C 使用 “”
4)注意
1. NSLog函数使用的是OC字符串,所以要加上@
2. OC字符串对应得格式占位符是%@
#pragma mark - Day01_11_OC的其他基础语法
1) NS前缀
NextStep --> cocoa --> NS
2) @符号
1. 将C字符串转换为OC字符串 @"jack"
2. OC在C的基础之上,新增了一些关键字.新增的这些关键字大部分都是以@符号开头.
3) 注释.
单行注释 //
多行注释 /* */
文档注释 /** */
vvdocumenter
4) OC中也可以定义函数.并且定义的方式一模一样.
#pragma mark - Day01_12_OC程序的编译链接流程(了解)
1. 创建1个.m的源文件.
2. 在这个文件中写上符合OC语法规范的源代码.
3. 编译.
a. 预编译: 执行预处理代码.
b. 检查语法.
c. 生成目标文件. .o的目标文件. object
4. 链接.
a. 添加启动代码.
b. 链接函数.
如果代码中使用到了框架中的功能.那么在链接的时候,就必须要告诉编译器去哪个框架中找这些函数.
cc xx.o -framework 框架名称
2) 和C程序各个阶段的文件后缀名对比.
源文件 目标文件 可执行文件
C语言 .c .o .out
OC语言 .m .o .out
#pragma mark - Day01_13_BOOL类型变量
1) OC支持C语言中的所有的数据类型.
1. 基本数据类型
2. 构造类型
数组.
结构体
枚举.
3. 指针.
4. typedef定义类型.
5. void空类型.
2) BOOL类型
1. 取值 YES 、 NO
2. 表示条件表达式结果,成立是YES 不成立是NO
3. 本质
typedef signed char BOOL;
实际上是1个有符号的char变量.
YES和NO的本质
” #define YES ((BOOL)1)
” #define NO ((BOOL)0)
3) BOOL类型使用 "%d" 打印
#pragma mark - Day01_14_Boolean类型
这个类型的变量只能存储true或者false这两个数据.
代表1个条件表达式的结果.
一般情况下.Boolean类型的变量用来保存1个条件表达式的结果.
如果条件成立,那么结果就是true 否则结果就是false.
Boolean的本质
typedef unsigned char Boolean;
是1个无符号的char变量.
true和false的本质.
”#define true 1
”#define false 0
#pragma mark - Day01_15_OC新增的数据类型
1) BOOL 类型
2) Boolean 类型
3) class 类型
4) nil 类型
5) SEL 类型
6) block 类型
#pragma mark - Day01_16_OC和C的对比
1) OC的运算符: OC支持C的所有的运算符.
1. 赋值运算符.
2. 算术运算符
3. 复合赋值运算符
4. 自增与自减运算符
5. 逗号运算符
6. 关系运算符 比较运算符
7. 逻辑运算符
8. 三元运算符
9. & 取地址运算符.
10. * 指针访问运算符.
11. 位运算符.
2) OC的控制语句: OC支持C的所有的控制语句.
1. IF
2. switch-case
3. while do-while for
4. 数组.
5. 指针.
6. 结构体 枚举
3) OC的关键字
1. OC支持C语言的所有的关键字. 并且效果是一样的.
2. OC在C的基础之上还新增了一些关键字.OC中新增的关键字绝大部分都是以@开头.
@interface
@implementation
@public
@protocol
4) OC相对于C做了两件事情.
1). 将C语言中复杂的 繁琐的语法封装的更为简单.
2). 增加了面向对象的语法.
#pragma mark - Day01_17_面向过程与面向对象(重点)
1)面向过程
在解决一个问题时,每一个步骤都自己去实现。这样的思路,我们叫面向过程。
2)面向对象
在解决一个问题时,自己没有必要去做,可以找合适的人或物来处理。这样的思路我们叫面向对象。
面向过程与面向对象是解决同1个问题的不同的思路而已.
1. 面向过程的解决问题的思路.
解决这个问题的每1个步骤,都是我自己亲自去实现
2. 面向对象的解决问题的思路.
自己不要去亲自做,而是找1个专门做这个事情的人来帮我做.找专门的人做专业的事情.
#pragma mark - Day01_18_代码世界中的面向过程与面向对象(重点)
1)面向过程
实现一个需求,每一个步骤都一步一步来实现,这种方式叫面向过程
2)面向对象
实现一个功能,找一个专门处理这个功能的对象来实现这个功能。这种方式叫面向对象
#pragma mark - Day01_19_面向过程与面向对象的优缺点分析(重点)
1). 面向过程:
C语言就是1门面向过程的语言.
缺点: 一旦需求发生变化.就要重新来. 就要把代码推倒重新来.
C语言中有函数.函数与函数之间是相互独立的. 没有人的概念.
2). 面向对象:
OC语言就是1门面向对象的语言.
优势: 后期的维护和修改非常的方便 需求变化,大不了我重新换人.
人: 1个人可以有与之相关的很多的功能.
3) 如何使用面向对象来解决问题.
1. 当你遇到1个需求的时候,千万要记住,不要自己1步1步去实现.
2. 框架.框架中就有很多人在里面听你的召唤.不同的框架中,预置了很多可以做不同事情的人. 类.
3. 首选,先去找预置的框架中是否有专门做这个事情的人.如果有,直接喊过来用
4. 如果没有.就自己造1个可以实现这个需求的人.自己造的话.不仅现在可以用这个人,并且以后也可以使用.
#pragma mark - Day01_20_什么是类和对象(较难)
1)对象
定义:对象是现实生活中的具体存在事物
世间万物皆对象 。
特点:看得见,摸的着,拿过来就可以用
2)类
定义:对某些具有相同特征和行为的事物的统称
特点:抽象的.不能直接使用.
#pragma mark - Day01_21_类与对象之间的关系
1)类和对象的关系
对象是1类事物中的1个具体存在
例:
类是制造月饼的模子,模子不能吃,所以类是不能用的.对象是根据这个模子制造出来的月饼.模子上有什么,月饼上就有什么,不会多也不会少.月饼可以吃,所以对象可以用. 所以,类模板中有什么,根据这个类模板创建出来的对象中就有什么不会多也不会少.
#pragma mark - Day01_22_如何设计类 (重要)
1) 作用
用来描述1群具有相同特征和行为的事物的.
2) 设计类的三要素.
这类事物的名称
这类事物具有的共同的特征.
这类事物具有的共同的行为.
3). 如何找类?
名词提炼法: 就是分析整个业务流程中出现了哪些名词,这些名词就是类.
然后根据类的三要素.来分析这些类有哪些特征和行为.
#pragma mark - Day01_23_如何定义一个类
1) 作用
用代码来描述1群具有相同特征和行为的事物的.
2) 设计类的三要素.
类名
特征
行为
3). 定义1个类的语法
1. 定义类的位置.
应该写在main函数的外面,直接写在源文件下.
2. 在OC中创建1个类,需要两个步骤.
'a. 类的声明
@interface 类名 : NSObject
{
这类事物具有的相同的特征.
把这些特征定义为1个1个的变量.
数据类型1 变量名1;
数据类型2 变量名2;
.......
}
写上这类事物具有的共同的行为,用方法表示.
方法的声明.
@end
'b. 类的实现.
@implementation 类名
方法的实现.
@end
3. 需要注意的是.
类所具备的共同的特征,应该是以变量的形式声明在@interface的大括弧之中.
4) 注意点
a. 类必须要有声明和实现. 声明和实现必须同时有.
b. 类名 这个类是来描述那1类事物的,直接使用这类事物的名称当做这个类的名称.
类名的每1个单词的首字母大写.
c. 在写类的时候.类名不能和框架中的类的名字冲突.
为了防止命名冲突,我们建议为我们的类加1个前缀.
d. 冒号后面的NSObject 不要去管什么意思. 照写就可以了.
e. 用来表示这类事物具有的共同的特征的变量,应该定义在@interface的大括弧中.
这些变量: 特征、属性、成员变量、实例变量、字段、实例字段.
f. 属性名称必须要以_开头.
这是规范.虽然你不遵守是可以的.但是后面的一些知识点都是以属性名下划线开头为前提的.
#pragma mark - Day01_01_OC语言的历史(了解)
1) Objective - C 是一门面向对象的高级语言
2) Objective - C 简称 obj - C \ OC
3) OC 本质是还是C语言 ,是在C语言基础上加上了面向对象的部分,把C语言中复杂的、繁琐的语法封装的更为简单
4) OC完全兼容C,可以在任何位置写C语言的代码
#pragma mark - Day01_02_OC语言的发展现状(了解)
#pragma mark - Day01_03_OC的未来(了解)
1)苹果在2014年推出了swift语言,并且在2015年年底开源
2)swift未来会成为开发iOS程序的主流,但是需要一段时间,当前夯实以OC为主
#pragma mark - Day01_04_学习目标
#pragma mark - Day01_05_第一个OC程序
#pragma mark - Day01_06_OC的源文件后缀名和main函数
1) Objective - C 源文件的后缀名是 .m C语言程序源文件的后缀名是 .c
2) Objective - C 的入口依然是 main函数
参数 可以有也可以没有
返回值 0 正常结束
"拓展
补充 main函数默认两个参数 初始化值为0
#pragma mark - Day01_07_#import指令
1)以'#'开头,是一个预编译指令
2)#import 指令,是#include的增强版
3)作用:把指定的文件,拷贝到这个指令所在的地方,无论这个文件被#import多少次,最终只会拷贝一次
4)用法:
#import "" 在项目当前目录中找
#import <> 去编译器目录中找
#pragma mark - Day01_08_Foundation框架简要介绍
1)框架概念
类和函数的集合,用来处理相关的一类功能
2)Foundation框架
提供了OC中最基本的语法支持
3)使用
使用框架里的东西,必须先把框架的头文件导入
4)一般的框架都会提供一个和框架名称一样的.h,这个文件中包含了框架中所有头文件,我们只要导入这文件,就等价于导入了这个框架的所有文件
#pragma mark - Day01_09_NSLog函数
1)自动释放池 后续会讲
2)NSLog()函数,是Foundation框架中的一个函数
3)用法
NSLog(@“格式控制符”,变量列表);
4)输出内容
1. 输出时间
2. 项目名称
3. 进程id
4. 线程id
5. 要输出的内容
5)使用方式,与printf基本一样,但是可以自动换行
6)注意点
1. 第一个参数前面一定加上一个'@'符号
2. 如在结果加上\n,函数自动换行会失效
"拓展(可不补充)
补充NSLog局限性(打印C语言带汉语的字符串会出问题)
#pragma mark - Day01_10_NSString字符串
1)C语言字符串实现方式
1. 字符数组
2. 字符指针
2)OC 中的字符串存储使用NSSrting ,只能保存OC字符串
3)方式
声明: NSString *str;
OC 使用 @“”
C 使用 “”
4)注意
1. NSLog函数使用的是OC字符串,所以要加上@
2. OC字符串对应得格式占位符是%@
#pragma mark - Day01_11_OC的其他基础语法
1) NS前缀
NextStep --> cocoa --> NS
2) @符号
1. 将C字符串转换为OC字符串 @"jack"
2. OC在C的基础之上,新增了一些关键字.新增的这些关键字大部分都是以@符号开头.
3) 注释.
单行注释 //
多行注释 /* */
文档注释 /** */
vvdocumenter
4) OC中也可以定义函数.并且定义的方式一模一样.
#pragma mark - Day01_12_OC程序的编译链接流程(了解)
1. 创建1个.m的源文件.
2. 在这个文件中写上符合OC语法规范的源代码.
3. 编译.
a. 预编译: 执行预处理代码.
b. 检查语法.
c. 生成目标文件. .o的目标文件. object
4. 链接.
a. 添加启动代码.
b. 链接函数.
如果代码中使用到了框架中的功能.那么在链接的时候,就必须要告诉编译器去哪个框架中找这些函数.
cc xx.o -framework 框架名称
2) 和C程序各个阶段的文件后缀名对比.
源文件 目标文件 可执行文件
C语言 .c .o .out
OC语言 .m .o .out
#pragma mark - Day01_13_BOOL类型变量
1) OC支持C语言中的所有的数据类型.
1. 基本数据类型
2. 构造类型
数组.
结构体
枚举.
3. 指针.
4. typedef定义类型.
5. void空类型.
2) BOOL类型
1. 取值 YES 、 NO
2. 表示条件表达式结果,成立是YES 不成立是NO
3. 本质
typedef signed char BOOL;
实际上是1个有符号的char变量.
YES和NO的本质
” #define YES ((BOOL)1)
” #define NO ((BOOL)0)
3) BOOL类型使用 "%d" 打印
#pragma mark - Day01_14_Boolean类型
这个类型的变量只能存储true或者false这两个数据.
代表1个条件表达式的结果.
一般情况下.Boolean类型的变量用来保存1个条件表达式的结果.
如果条件成立,那么结果就是true 否则结果就是false.
Boolean的本质
typedef unsigned char Boolean;
是1个无符号的char变量.
true和false的本质.
”#define true 1
”#define false 0
#pragma mark - Day01_15_OC新增的数据类型
1) BOOL 类型
2) Boolean 类型
3) class 类型
4) nil 类型
5) SEL 类型
6) block 类型
#pragma mark - Day01_16_OC和C的对比
1) OC的运算符: OC支持C的所有的运算符.
1. 赋值运算符.
2. 算术运算符
3. 复合赋值运算符
4. 自增与自减运算符
5. 逗号运算符
6. 关系运算符 比较运算符
7. 逻辑运算符
8. 三元运算符
9. & 取地址运算符.
10. * 指针访问运算符.
11. 位运算符.
2) OC的控制语句: OC支持C的所有的控制语句.
1. IF
2. switch-case
3. while do-while for
4. 数组.
5. 指针.
6. 结构体 枚举
3) OC的关键字
1. OC支持C语言的所有的关键字. 并且效果是一样的.
2. OC在C的基础之上还新增了一些关键字.OC中新增的关键字绝大部分都是以@开头.
@interface
@implementation
@public
@protocol
4) OC相对于C做了两件事情.
1). 将C语言中复杂的 繁琐的语法封装的更为简单.
2). 增加了面向对象的语法.
#pragma mark - Day01_17_面向过程与面向对象(重点)
1)面向过程
在解决一个问题时,每一个步骤都自己去实现。这样的思路,我们叫面向过程。
2)面向对象
在解决一个问题时,自己没有必要去做,可以找合适的人或物来处理。这样的思路我们叫面向对象。
面向过程与面向对象是解决同1个问题的不同的思路而已.
1. 面向过程的解决问题的思路.
解决这个问题的每1个步骤,都是我自己亲自去实现
2. 面向对象的解决问题的思路.
自己不要去亲自做,而是找1个专门做这个事情的人来帮我做.找专门的人做专业的事情.
#pragma mark - Day01_18_代码世界中的面向过程与面向对象(重点)
1)面向过程
实现一个需求,每一个步骤都一步一步来实现,这种方式叫面向过程
2)面向对象
实现一个功能,找一个专门处理这个功能的对象来实现这个功能。这种方式叫面向对象
#pragma mark - Day01_19_面向过程与面向对象的优缺点分析(重点)
1). 面向过程:
C语言就是1门面向过程的语言.
缺点: 一旦需求发生变化.就要重新来. 就要把代码推倒重新来.
C语言中有函数.函数与函数之间是相互独立的. 没有人的概念.
2). 面向对象:
OC语言就是1门面向对象的语言.
优势: 后期的维护和修改非常的方便 需求变化,大不了我重新换人.
人: 1个人可以有与之相关的很多的功能.
3) 如何使用面向对象来解决问题.
1. 当你遇到1个需求的时候,千万要记住,不要自己1步1步去实现.
2. 框架.框架中就有很多人在里面听你的召唤.不同的框架中,预置了很多可以做不同事情的人. 类.
3. 首选,先去找预置的框架中是否有专门做这个事情的人.如果有,直接喊过来用
4. 如果没有.就自己造1个可以实现这个需求的人.自己造的话.不仅现在可以用这个人,并且以后也可以使用.
#pragma mark - Day01_20_什么是类和对象(较难)
1)对象
定义:对象是现实生活中的具体存在事物
世间万物皆对象 。
特点:看得见,摸的着,拿过来就可以用
2)类
定义:对某些具有相同特征和行为的事物的统称
特点:抽象的.不能直接使用.
#pragma mark - Day01_21_类与对象之间的关系
1)类和对象的关系
对象是1类事物中的1个具体存在
例:
类是制造月饼的模子,模子不能吃,所以类是不能用的.对象是根据这个模子制造出来的月饼.模子上有什么,月饼上就有什么,不会多也不会少.月饼可以吃,所以对象可以用. 所以,类模板中有什么,根据这个类模板创建出来的对象中就有什么不会多也不会少.
#pragma mark - Day01_22_如何设计类 (重要)
1) 作用
用来描述1群具有相同特征和行为的事物的.
2) 设计类的三要素.
这类事物的名称
这类事物具有的共同的特征.
这类事物具有的共同的行为.
3). 如何找类?
名词提炼法: 就是分析整个业务流程中出现了哪些名词,这些名词就是类.
然后根据类的三要素.来分析这些类有哪些特征和行为.
#pragma mark - Day01_23_如何定义一个类
1) 作用
用代码来描述1群具有相同特征和行为的事物的.
2) 设计类的三要素.
类名
特征
行为
3). 定义1个类的语法
1. 定义类的位置.
应该写在main函数的外面,直接写在源文件下.
2. 在OC中创建1个类,需要两个步骤.
'a. 类的声明
@interface 类名 : NSObject
{
这类事物具有的相同的特征.
把这些特征定义为1个1个的变量.
数据类型1 变量名1;
数据类型2 变量名2;
.......
}
写上这类事物具有的共同的行为,用方法表示.
方法的声明.
@end
'b. 类的实现.
@implementation 类名
方法的实现.
@end
3. 需要注意的是.
类所具备的共同的特征,应该是以变量的形式声明在@interface的大括弧之中.
4) 注意点
a. 类必须要有声明和实现. 声明和实现必须同时有.
b. 类名 这个类是来描述那1类事物的,直接使用这类事物的名称当做这个类的名称.
类名的每1个单词的首字母大写.
c. 在写类的时候.类名不能和框架中的类的名字冲突.
为了防止命名冲突,我们建议为我们的类加1个前缀.
d. 冒号后面的NSObject 不要去管什么意思. 照写就可以了.
e. 用来表示这类事物具有的共同的特征的变量,应该定义在@interface的大括弧中.
这些变量: 特征、属性、成员变量、实例变量、字段、实例字段.
f. 属性名称必须要以_开头.
这是规范.虽然你不遵守是可以的.但是后面的一些知识点都是以属性名下划线开头为前提的.