#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个书类.
属性:
书名
书号
作者
价格
页码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |