A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

#pragma mark - Day01_01_OC语言的历史(了解)

1.Objective-C, Obj-C, OC

2.OC语言本质上还是 C 语言,在 C 语言的基础上增加了面向对象的特点

3.OC 语言是完全兼容 C 语言

4.OC 语言不是苹果开发的,但是苹果独家使用


#pragma mark - Day01_02_OC语言的发展现状(了解)

1.OC 语言的热度,随着 iOS 开发的火爆,而逐渐提高

2.C 语言,鼻祖地位


#pragma mark - Day01_03_OC的未来(了解)

1.OC前途堪忧.但是,并不代表 iOS 开发前途堪忧,因为苹果暂时不会倒闭.

2.在2014年,苹果推出了swift.并且 swift是会开源的.

3.swift 在未来,会逐渐的取代 OC,成为 iOS 开发的主流.

4.只要熟练掌握了 OC, 以后再转型学习 swift 会非常的轻松.


#pragma mark - Day01_04_基础班学习目标

1.OC 基础,前6天:OC 基本的语法, 初步建立面向对象的思想

2.OC 加强,后7天:深入学习 OC 的原理,掌握 OC 的高级语法特性



#pragma mark - Day01_05_第一个OC程序

1.创建一个 Mac OS 命令行程序,语言选择 OC


#pragma mark - Day01_06_OC的源文件后缀名和main函数

1.OC 语言后缀名. m, C 语言后缀名. c

2.OC 程序的入口依然是 main函数, main函数的参数可以省略


#pragma mark - Day01_07_#import指令

1.以#开头,是一个预处理指令

2.#import 指令就是#include指令的增强版

3.#import指令可以避免头文件的重复包含

4.用法

    a. "",先在当前项目的目录中找文件

    b. <>,在编译器的目录中找文件


#pragma mark - Day01_08_Foundation框架简要介绍

1.框架的定义:类和函数的集合

2.Foundation框架,OC 的字符串, OC 的数组...

3.使用框架的前提,导入框架中的头文件

4.Foundation框架: NSString.h, NSArray.h

每个框架中有一个总头文件,和框架同名,Foundation.h

#import <Foundation/Foundation.h>


5.框架的分类

    a.系统的框架,Foundation AVFoundation UIKit CoreGraphics CoreAnimation

    b.第三方框架,把一些常用的功能封装成一个框架,提供给别人使用

        GitHub,开源的源代码托管网站


#pragma mark - Day01_09_NSLog函数

1.NSLog函数是属于 Foundation 框架中的,作用是向控制台输出信息,是printf 的增强版

2.

输入的内容:2016-05-15 10:36:37.011 Day01-OC基础语法[810:45149]哈哈哈哈哈哈哈哈

a.时间

b.项目名称

c.进程 ID : 线程 ID

d.输出的内容

3.使用方式,和 printf 函数类似,可以自动换行

4.注意点

    a. NSLog(@"xxxx\n");一定要以@开头

    b. 可以自动换行, 但是如何在最后加上\n的话,就会失去自动换行的特性


5. 替换

a. #import 替换 #include

b. NSLog 替换 printf


OC里面并没有提供专门的接收控制台输入的函数 scanf

iOS开发都是通过界面和程序进行交互,不需要在控制台输入


#pragma mark - Day01_10_NSString字符串

1.C语言的字符串

    a.字符数组

    b.字符指针

2.NSString是OC中特有的字符串类,存在于Foundation框架中的

3.

    NSString 以 @符号开头 @""

    普通的C语言的字符串 ""

4. 注意点:

a. 必须以@符号开头

NSString *str = @"heima";

b. NSLog函数的参数是一个OC字符串,所以必须以@开头.如果想在NSLog输出OC字符串,需要使用%@进行占位

    NSLog(@"%@",)

%@ ,OC中新增的占位符,用于输出OC对象

printf 函数不能使用%@, 无法识别




#pragma mark - Day01_11_OC的其他基础语法

1.前缀

系统框架中的类默认前缀,NS -> NextStep

UIKit -> UI开头

CoreGraphics -> CG开头


2.注释

单行注释 //

多行注释 /* */

文档注释 /** */

         /**

         

          */

3.OC是完全兼容C的,所以在OC中可以定义C语言的函数



#pragma mark - Day01_12_OC程序的编译链接流程

1.编译

    a.执行预处理代码

    b.检查语法

    c.生成目标文件,.o文件


2.链接

    a.添加启动代码

    b.链接函数

    注意点:如果使用了框架中的函数,需要在链接的时候说明去哪个框架中找

    cc main.m -framework Foundation


3.Xcode工具


4.和C程序各个阶段的文件后缀名对比.

      源文件     目标文件       可执行文件

C语言   .c        .o             .out

OC语言  .m        .o             .out


#pragma mark - Day01_13_BOOL类型变量

1. OC支持C语言中的所有数据类型

2. BOOL类型用来取代C语言中的bool,取值是YES和NO

3. 本质

    a)BOOL类型实际上是一个有符号的char类型

    typedef signed char BOOL;

    b)YES和NO的本质是宏

    #define YES ((BOOL)1)

    #define NO  ((BOOL)0)


#pragma mark - Day01_14_Boolean类型

1.c语言, bool 0和1

2.OC语言, BOOL YES 和 NO

3.Boolean true 和false


#pragma mark - Day01_15_OC新增的数据类型

1.class 类

2.nil

NSString *str = nil;

3.SEL,用来保存方法的

4.block,用来保存一段代码,C语言中的函数指针类似


#pragma mark - Day01_16_OC和C的对比

1.OC支持C语言中所有的运算符

2.OC支持C语言中所有的控制语句

java C#


3.OC关键字,大多数情况下,OC中的关键字都是以@开头

4.OC的优化

    1. 简化了C原因中复杂的代码

    2. 增加了面向对象的特性



#pragma mark - Day01_17_面向过程与面向对象(重点)

面向过程和面向对象是解决问题的两种思路

1.面向过程:思考问题的侧重点在于 实现某个功能的具体步骤

2.面向对象:思考问题的侧重点在于 找到一个合适的对象去实现某个功能,屏蔽内部的实现细节


3.面向对象的思路,更加符合现实生活中解决问题的思路


找XXX帮我去做XXX事情


4.举例

生病了去医院

1.挂号:找导诊

2.看病:找医生(内科\外科)

3.化验:找护士



#pragma mark - Day01_18_代码世界中的面向过程与面向对象(重点)

1. char *s = "aaaaaaa";

2. NSString *str = @"aaaaaaa";

    [str length]


3. 顿悟.


#pragma mark - Day01_19_面向过程与面向对象的优缺点分析(重点)

1. 在main函数中,直接写一段执行某个功能代码 -> 把某个功能封装在一个函数中 -> 文件,把实现类似功能的函数放在同一个文件中


运算

yunsuan.h

void add(int a, int b);



yunsuan.c



main() {

    add(1, 2);

}



2. 专门搞一个人,负责yunsuan, 包含了加减乘除等功能

找运算的对象 ,让他帮我实现加的方法

[yunsuan add];



3. 编程语言的发展,循序渐进的,先有的面向过程 -> 面向对象


4. 面向对象其实是基于面向过程的

面向对象是在面向过程的基础上进行了更高的抽象


#pragma mark - Day01_20_什么是类和对象(较难)

1.对象:具体

定义:对象现实生活中看得见 摸得着 真实存在的具体事物

以面向对象的角度分析问题:万物皆对象


2.类:抽象

定义:对某些具有相同特征和相同行为的事物的统称



人  类

中国人 类

中国的老人 类

中国的学生 类

双元课堂的学生 类

双元课堂学习iOS的学生 类


0419班学号是1号的人  具体的对象



#pragma mark - Day01_21_类与对象之间的关系

1.类:抽象

定义:对某些具有相同特征和相同行为的事物的统称


2.关系:对象是1类事物中的1个具体的存在


3.例子


汽车 图纸

图纸就是类,图纸是不能直接开的,所以类不能直接使用


根据图纸造出来一辆具体的车,就是对象,车是能开的,所以对象是可以使用的


根据图纸  造   车

根据类   创建 对象


根据类创建对象的过程, 相当于根据抽象的特征,创造除了一个具体的实例  ->实例化,通过类,实例化出一个对象







#pragma mark - Day01_22_如何设计类 (重要)


1.作用:用来描述1群具有相同特征和相同行为的事物

2.类的三要素

    类的名称

    类的特征

    类的行为

3. 如何找类:名词提炼法


4.练习1: 老师让学生起来回答问题


    老师类

    特征: 姓名 学科 年龄....

    行为:提问


    学生类

    特征:姓名 年龄 身高 性别

    行为:回答问题  站 坐


    问题类

    特征:描述 分值


练习2: 学生用电脑写代码


    学生类

    特征::姓名 年龄 身高 性别

    行为:写代码 调bug



    电脑类

    特征:CPU 内存....

    行为:运行代码


    代码类

    特征:行数 语言

    行为:运行



#pragma mark - Day01_23_如何定义一个类

1.类定义的位置:main函数外面,直接写在源文件中


2.步骤

1) 类的声明

@interface Person : NSObject

{

    // 类的特征

    int _age;

}


// 类的行为的声明


@end


2) 类的实现

@implementation Person

// 类的行为的实现


@end


3.练习


设计1个车类.


具有的属性(特征)

*品牌

*型号

*颜色

*座位数量

*轮子数量

*油量


4.设计1个球队类

属性

*球队名称

*球员数量

*教练数量

*胜利场数

*失败场数


5.设计1个书类.

属性:

书名

书号

作者

价格

页码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马