OC基础-第1天

#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年年底开源

 

2swift未来会成为开发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)框架概念

 类和函数的集合,用来处理相关的一类功能

 

2Foundation框架

  提供了OC中最基本的语法支持

 

3)使用

使用框架里的东西,必须先把框架的头文件导入

 

4)一般的框架都会提供一个和框架名称一样的.h,这个文件中包含了框架中所有头文件,我们只要导入这文件,就等价于导入了这个框架的所有文件

 

#pragma mark - Day01_09_NSLog函数

 

1)自动释放池 后续会讲

 

2NSLog()函数,是Foundation框架中的一个函数

 

3)用法

NSLog@“格式控制符,变量列表);

 

4)输出内容

    1. 输出时间

    2. 项目名称

    3. 进程id

    4. 线程id

    5. 要输出的内容

 

5)使用方式,与printf基本一样,但是可以自动换行

 

6)注意点

    1. 第一个参数前面一定加上一个'@'符号

    2. 如在结果加上\n,函数自动换行会失效

"拓展(可不补充)

补充NSLog局限性(打印C语言带汉语的字符串会出问题)

#pragma mark - Day01_10_NSString字符串

1C语言字符串实现方式

    1. 字符数组

 

    2. 字符指针

 

2OC 中的字符串存储使用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. OCC的基础之上,新增了一些关键字.新增的这些关键字大部分都是以@符号开头.

 

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变量.

 

YESNO的本质

” #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变量.

 

truefalse的本质.

”#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_OCC的对比

 

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. OCC的基础之上还新增了一些关键字.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个需求的时候,千万要记住,不要自己11步去实现.

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

{

    这类事物具有的相同的特征.

    把这些特征定义为11个的变量.

    数据类型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年年底开源

 

2swift未来会成为开发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)框架概念

 类和函数的集合,用来处理相关的一类功能

 

2Foundation框架

  提供了OC中最基本的语法支持

 

3)使用

使用框架里的东西,必须先把框架的头文件导入

 

4)一般的框架都会提供一个和框架名称一样的.h,这个文件中包含了框架中所有头文件,我们只要导入这文件,就等价于导入了这个框架的所有文件

 

#pragma mark - Day01_09_NSLog函数

 

1)自动释放池 后续会讲

 

2NSLog()函数,是Foundation框架中的一个函数

 

3)用法

NSLog@“格式控制符,变量列表);

 

4)输出内容

    1. 输出时间

    2. 项目名称

    3. 进程id

    4. 线程id

    5. 要输出的内容

 

5)使用方式,与printf基本一样,但是可以自动换行

 

6)注意点

    1. 第一个参数前面一定加上一个'@'符号

    2. 如在结果加上\n,函数自动换行会失效

"拓展(可不补充)

补充NSLog局限性(打印C语言带汉语的字符串会出问题)

#pragma mark - Day01_10_NSString字符串

1C语言字符串实现方式

    1. 字符数组

 

    2. 字符指针

 

2OC 中的字符串存储使用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. OCC的基础之上,新增了一些关键字.新增的这些关键字大部分都是以@符号开头.

 

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变量.

 

YESNO的本质

” #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变量.

 

truefalse的本质.

”#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_OCC的对比

 

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. OCC的基础之上还新增了一些关键字.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个需求的时候,千万要记住,不要自己11步去实现.

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

{

    这类事物具有的相同的特征.

    把这些特征定义为11个的变量.

    数据类型1 变量名1;

    数据类型2 变量名2;

    .......

}

写上这类事物具有的共同的行为,用方法表示.

方法的声明.

@end

'b. 类的实现.

@implementation 类名

方法的实现.

@end

 

 

3. 需要注意的是.

类所具备的共同的特征,应该是以变量的形式声明在@interface的大括弧之中.

 

4) 注意点

 

a. 类必须要有声明和实现. 声明和实现必须同时有.

b. 类名 这个类是来描述那1类事物的,直接使用这类事物的名称当做这个类的名称.

类名的每1个单词的首字母大写.

c. 在写类的时候.类名不能和框架中的类的名字冲突.

为了防止命名冲突,我们建议为我们的类加1个前缀.

 

d. 冒号后面的NSObject 不要去管什么意思. 照写就可以了.

e. 用来表示这类事物具有的共同的特征的变量,应该定义在@interface的大括弧中.

这些变量: 特征、属性、成员变量、实例变量、字段、实例字段.

 

f. 属性名称必须要以_开头.

这是规范.虽然你不遵守是可以的.但是后面的一些知识点都是以属性名下划线开头为前提的.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2016-07-26 14:47  MK王月  阅读(284)  评论(0编辑  收藏  举报